/**
 * A dummy manual test script
 */
import * as Logger from 'bunyan';
import * as LdapAuth from '../lib/ldapauth';

const log = new Logger({
    name: 'ldap',
    component: 'client',
    stream: process.stderr,
    level: 'trace'
});

const opts: LdapAuth.Options = {
  url: 'ldap://ldap.forumsys.com:389',
  bindDN: 'cn=read-only-admin,dc=example,dc=com',
  bindCredentials: 'password',
  searchBase: 'dc=example,dc=com',
  searchFilter: '(uid={{username}})',
  log: log,
  cache: true,
  includeRaw: true,
  groupSearchFilter: '(member={{dn}})',
  groupSearchBase: 'dc=example,dc=com'
};

const auth = new LdapAuth(opts);

auth.on('error', (err) => {
    console.warn(err);
    // TODO: auth.close() doesn't do anything here
});

auth.authenticate('riemann', 'password', (err, user) => {
    if (err) {
        console.warn(err);
        auth.close(() => console.log('Unbound'));
    } else {
        console.log(user);
        // Re-auth to be able to verify cache works
        auth.authenticate('riemann', 'password', (err, user) => {
            if (err) {
                console.warn(err);
            } else {
                console.log('Re-auth user DN:', user.dn);
            }
            auth.close();
        });
    }
});
