mozilla/vinz-clortho — pull request #117 by lloyd (2013-09-03 08:49:07+00:00)
Title: improved command line testing tool, remove unneccesary LDAP connection

In diagnosing a problem where a user reported trouble logging in with an alias, I wanted to be able to excercise all of the authentication logic that is in play from the command line. So I updated test-auth.js and it looks like this now. Usage:

Test authentication against LDAP.
Usage: node ./scripts/test-auth.js

Options:
-h, --help display this usage message
-u, --url LDAP server url [default: "ldaps://addressbook.mozilla.com:636"]
-a, --address email address to authenticate (may be an alias) [required]
-p, --password LDAP account password [required]
-c, --canonical canonical LDAP password (required when email is an alias)

execution:

$ scripts/test-auth.js -a lloyd@mozilla.com -c lhilaiel@mozilla.com -p
canonical address for lloyd@mozilla.com is lhilaiel@mozilla.com
{ email: 'lhilaiel@mozilla.com',
zimbraAlias: 'lloyd@mozilla.com',
pwdChangedTime: '20130618163347Z' }

In order to make this work I needed to be able to pass in arguments to `auth.canonicalAddress` and `auth.authUser`, so I added symmetry to all of the auth functions.

Finally, while I was in there, the addition of getUserData had caused a performance regression. Three distinct LDAP connections are now established while logging a user in, I reduced this to two by modifying `getUserData` to optionally accept a bound LDAP connection so re-establishment is not neccesary.

All automated and manual tests pass, I can massage this commit into two if it makes anyone uncomfortable