github/github-ldap — pull request #50 by mtodd (2014-10-15 22:19:51+00:00)
Title: Merge dev-v2 branch into master

This PR merges in the `dev-v2` branch into master, including these fixes:

This does not signify that v2 is ready, just that this code is at a point where we want to keep iterating on master and that v2 is on the horizon.

## Membership Validation

This introduces `MembershipValidators` module with `Classic` and `Recursive` (with more to come) objects intended to replace the expensive/inefficient `GitHub::Ldap::Domain#is_member?` method. (The `Classic` strategy wraps that method so it's still available if required.)

The `GitHub::Ldap::MembershipValidators::Recursive` strategy efficiently determines whether a user is a member of any of the supplied groups, recursing down a chain until membership is validated, no more groups can be checked, or we hit the maximum depth. Very little data is transferred to the client side for these queried, resulting in much faster operation and much less data transferred over the wire.

An ActiveDirectory-specific strategy is planned before v2.

## Tests

* use single seed LDIF fixture file for all tests
* boot LDAP server once for all tests (instead of once per class)
* wire up OpenLDAP CI tests alongside ApacheDS

cc @jch