github-ldap 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -2
  3. data/CHANGELOG.md +13 -0
  4. data/Gemfile +4 -0
  5. data/README.md +15 -1
  6. data/Rakefile +1 -1
  7. data/github-ldap.gemspec +2 -2
  8. data/lib/github/ldap.rb +55 -12
  9. data/lib/github/ldap/domain.rb +6 -2
  10. data/lib/github/ldap/filter.rb +15 -7
  11. data/lib/github/ldap/group.rb +1 -1
  12. data/lib/github/ldap/instrumentation.rb +28 -0
  13. data/lib/github/ldap/membership_validators.rb +18 -0
  14. data/lib/github/ldap/membership_validators/active_directory.rb +56 -0
  15. data/lib/github/ldap/membership_validators/base.rb +37 -0
  16. data/lib/github/ldap/membership_validators/classic.rb +34 -0
  17. data/lib/github/ldap/membership_validators/recursive.rb +93 -0
  18. data/lib/github/ldap/server.rb +2 -0
  19. data/script/changelog +29 -0
  20. data/script/cibuild-apacheds +7 -0
  21. data/script/cibuild-openldap +7 -0
  22. data/script/install-openldap +44 -0
  23. data/script/package +7 -0
  24. data/script/release +16 -0
  25. data/test/domain_test.rb +71 -89
  26. data/test/filter_test.rb +12 -1
  27. data/test/fixtures/common/seed.ldif +369 -0
  28. data/test/fixtures/openldap/memberof.ldif +33 -0
  29. data/test/fixtures/openldap/slapd.conf.ldif +67 -0
  30. data/test/fixtures/posixGroup.schema.ldif +34 -8
  31. data/test/group_test.rb +19 -25
  32. data/test/ldap_test.rb +28 -21
  33. data/test/membership_validators/active_directory_test.rb +68 -0
  34. data/test/membership_validators/classic_test.rb +51 -0
  35. data/test/membership_validators/recursive_test.rb +56 -0
  36. data/test/membership_validators_test.rb +46 -0
  37. data/test/posix_group_test.rb +25 -28
  38. data/test/support/vm/openldap/.gitignore +1 -0
  39. data/test/support/vm/openldap/README.md +32 -0
  40. data/test/support/vm/openldap/Vagrantfile +35 -0
  41. data/test/test_helper.rb +72 -10
  42. metadata +52 -27
  43. data/test/fixtures/github-with-looped-subgroups.ldif +0 -82
  44. data/test/fixtures/github-with-missing-entries.ldif +0 -85
  45. data/test/fixtures/github-with-posixGroups.ldif +0 -50
  46. data/test/fixtures/github-with-subgroups.ldif +0 -146
@@ -1,82 +0,0 @@
1
- version: 1
2
-
3
- # Admin user
4
-
5
- dn: uid=admin,dc=github,dc=com
6
- objectClass: top
7
- objectClass: person
8
- objectClass: organizationalPerson
9
- objectClass: inetOrgPerson
10
- cn: system administrator
11
- sn: administrator
12
- displayName: Directory Superuser
13
- uid: admin
14
- userPassword: secret
15
-
16
- # Groups
17
-
18
- dn: ou=groups,dc=github,dc=com
19
- objectclass: organizationalUnit
20
-
21
- dn: cn=enterprise,ou=groups,dc=github,dc=com
22
- cn: Enterprise
23
- objectClass: groupOfNames
24
- member: uid=calavera,ou=users,dc=github,dc=com
25
- member: cn=enterprise-devs,ou=groups,dc=github,dc=com
26
- member: cn=enterprise-ops,ou=groups,dc=github,dc=com
27
-
28
- dn: cn=enterprise-devs,ou=groups,dc=github,dc=com
29
- cn: enterprise-devs
30
- objectClass: groupOfNames
31
- member: uid=benburkert,ou=users,dc=github,dc=com
32
- member: cn=enterprise,ou=groups,dc=github,dc=com
33
-
34
- dn: cn=enterprise-ops,ou=groups,dc=github,dc=com
35
- cn: enterprise-ops
36
- objectClass: groupOfNames
37
- member: uid=sbryant,ou=users,dc=github,dc=com
38
- member: cn=spaniards,ou=groups,dc=github,dc=com
39
-
40
- dn: cn=spaniards,ou=groups,dc=github,dc=com
41
- cn: spaniards
42
- objectClass: groupOfNames
43
- member: uid=calavera,ou=users,dc=github,dc=com
44
- member: uid=rubiojr,ou=users,dc=github,dc=com
45
-
46
- # Users
47
-
48
- dn: ou=users,dc=github,dc=com
49
- objectclass: organizationalUnit
50
-
51
- dn: uid=calavera,ou=users,dc=github,dc=com
52
- cn: David Calavera
53
- cn: David
54
- sn: Calavera
55
- uid: calavera
56
- userPassword: passworD1
57
- mail: calavera@github.com
58
- objectClass: inetOrgPerson
59
-
60
- dn: uid=benburkert,ou=users,dc=github,dc=com
61
- cn: benburkert
62
- sn: benburkert
63
- uid: benburkert
64
- userPassword: passworD1
65
- mail: benburkert@github.com
66
- objectClass: inetOrgPerson
67
-
68
- dn: uid=sbryant,ou=users,dc=github,dc=com
69
- cn: sbryant
70
- sn: sbryant
71
- uid: sbryant
72
- userPassword: passworD1
73
- mail: sbryant@github.com
74
- objectClass: inetOrgPerson
75
-
76
- dn: uid=rubiojr,ou=users,dc=github,dc=com
77
- cn: rubiojr
78
- sn: rubiojr
79
- uid: rubiojr
80
- userPassword: passworD1
81
- mail: rubiojr@github.com
82
- objectClass: inetOrgPerson
@@ -1,85 +0,0 @@
1
- version: 1
2
-
3
- # Admin user
4
-
5
- dn: uid=admin,dc=github,dc=com
6
- objectClass: top
7
- objectClass: person
8
- objectClass: organizationalPerson
9
- objectClass: inetOrgPerson
10
- cn: system administrator
11
- sn: administrator
12
- displayName: Directory Superuser
13
- uid: admin
14
- userPassword: secret
15
-
16
- # Groups
17
-
18
- dn: ou=groups,dc=github,dc=com
19
- objectclass: organizationalUnit
20
-
21
- dn: cn=enterprise,ou=groups,dc=github,dc=com
22
- cn: Enterprise
23
- objectClass: groupOfNames
24
- member: uid=calavera,ou=users,dc=github,dc=com
25
- member: cn=enterprise-devs,ou=groups,dc=github,dc=com
26
- member: cn=enterprise-ops,ou=groups,dc=github,dc=com
27
-
28
- dn: cn=enterprise-devs,ou=groups,dc=github,dc=com
29
- cn: enterprise-devs
30
- objectClass: groupOfNames
31
- member: uid=benburkert,ou=users,dc=github,dc=com
32
- member: cn=enterprise,ou=groups,dc=github,dc=com
33
-
34
- dn: cn=enterprise-ops,ou=groups,dc=github,dc=com
35
- cn: enterprise-ops
36
- objectClass: groupOfNames
37
- member: uid=sbryant,ou=users,dc=github,dc=com
38
- member: cn=spaniards,ou=groups,dc=github,dc=com
39
-
40
- # The last member of this group is missing on purpose.
41
- # See: https://github.com/github/github-ldap/pull/18
42
- dn: cn=spaniards,ou=groups,dc=github,dc=com
43
- cn: spaniards
44
- objectClass: groupOfNames
45
- member: uid=calavera,ou=users,dc=github,dc=com
46
- member: uid=rubiojr,ou=users,dc=github,dc=com
47
- member: uid=felipe,ou=users,dc=github,dc=com
48
-
49
- # Users
50
-
51
- dn: ou=users,dc=github,dc=com
52
- objectclass: organizationalUnit
53
-
54
- dn: uid=calavera,ou=users,dc=github,dc=com
55
- cn: David Calavera
56
- cn: David
57
- sn: Calavera
58
- uid: calavera
59
- userPassword: passworD1
60
- mail: calavera@github.com
61
- objectClass: inetOrgPerson
62
-
63
- dn: uid=benburkert,ou=users,dc=github,dc=com
64
- cn: benburkert
65
- sn: benburkert
66
- uid: benburkert
67
- userPassword: passworD1
68
- mail: benburkert@github.com
69
- objectClass: inetOrgPerson
70
-
71
- dn: uid=sbryant,ou=users,dc=github,dc=com
72
- cn: sbryant
73
- sn: sbryant
74
- uid: sbryant
75
- userPassword: passworD1
76
- mail: sbryant@github.com
77
- objectClass: inetOrgPerson
78
-
79
- dn: uid=rubiojr,ou=users,dc=github,dc=com
80
- cn: rubiojr
81
- sn: rubiojr
82
- uid: rubiojr
83
- userPassword: passworD1
84
- mail: rubiojr@github.com
85
- objectClass: inetOrgPerson
@@ -1,50 +0,0 @@
1
- version: 1
2
-
3
- # Admin user
4
-
5
- dn: uid=admin,dc=github,dc=com
6
- objectClass: top
7
- objectClass: person
8
- objectClass: organizationalPerson
9
- objectClass: inetOrgPerson
10
- cn: system administrator
11
- sn: administrator
12
- displayName: Directory Superuser
13
- uid: admin
14
- userPassword: secret
15
-
16
- # Groups
17
-
18
- dn: ou=groups,dc=github,dc=com
19
- objectclass: organizationalUnit
20
- ou: groups
21
-
22
- # Posix Groups
23
-
24
- dn: cn=enterprise-posix-devs,ou=groups,dc=github,dc=com
25
- cn: enterprise-posix-devs
26
- objectClass: posixGroup
27
- memberUid: benburkert
28
- memberUid: mtodd
29
-
30
- # Users
31
-
32
- dn: ou=users,dc=github,dc=com
33
- objectclass: organizationalUnit
34
- ou: users
35
-
36
- dn: uid=benburkert,ou=users,dc=github,dc=com
37
- cn: benburkert
38
- sn: benburkert
39
- uid: benburkert
40
- userPassword: passworD1
41
- mail: benburkert@github.com
42
- objectClass: inetOrgPerson
43
-
44
- dn: uid=mtodd,ou=users,dc=github,dc=com
45
- cn: mtodd
46
- sn: mtodd
47
- uid: mtodd
48
- userPassword: passworD1
49
- mail: mtodd@github.com
50
- objectClass: inetOrgPerson
@@ -1,146 +0,0 @@
1
- version: 1
2
-
3
- # Admin user
4
-
5
- dn: uid=admin,dc=github,dc=com
6
- objectClass: top
7
- objectClass: person
8
- objectClass: organizationalPerson
9
- objectClass: inetOrgPerson
10
- cn: system administrator
11
- sn: administrator
12
- displayName: Directory Superuser
13
- uid: admin
14
- userPassword: secret
15
-
16
- # Groups
17
-
18
- dn: ou=groups,dc=github,dc=com
19
- objectclass: organizationalUnit
20
- ou: groups
21
-
22
- dn: cn=enterprise,ou=groups,dc=github,dc=com
23
- cn: Enterprise
24
- objectClass: groupOfNames
25
- member: uid=calavera,ou=users,dc=github,dc=com
26
- member: cn=enterprise-devs,ou=groups,dc=github,dc=com
27
- member: cn=enterprise-ops,ou=groups,dc=github,dc=com
28
-
29
- dn: cn=enterprise-devs,ou=groups,dc=github,dc=com
30
- cn: enterprise-devs
31
- objectClass: groupOfNames
32
- member: uid=benburkert,ou=users,dc=github,dc=com
33
-
34
- dn: cn=enterprise-ops,ou=groups,dc=github,dc=com
35
- cn: enterprise-ops
36
- objectClass: groupOfNames
37
- member: uid=sbryant,ou=users,dc=github,dc=com
38
- member: cn=spaniards,ou=groups,dc=github,dc=com
39
-
40
- dn: cn=spaniards,ou=groups,dc=github,dc=com
41
- cn: spaniards
42
- objectClass: groupOfNames
43
- member: uid=calavera,ou=users,dc=github,dc=com
44
- member: uid=rubiojr,ou=users,dc=github,dc=com
45
-
46
- dn: cn=group1,ou=groups,dc=github,dc=com
47
- cn: group1
48
- objectClass: groupOfNames
49
- member: uid=user1,ou=users,dc=github,dc=com
50
- member: cn=group1.1,ou=groups,dc=github,dc=com
51
-
52
- dn: cn=group1.1,ou=groups,dc=github,dc=com
53
- cn: group1
54
- objectClass: groupOfNames
55
- member: uid=user1.1,ou=users,dc=github,dc=com
56
- member: cn=group1.1.1,ou=groups,dc=github,dc=com
57
-
58
- dn: cn=group1.1.1,ou=groups,dc=github,dc=com
59
- cn: group1
60
- objectClass: groupOfNames
61
- member: uid=user1.1.1,ou=users,dc=github,dc=com
62
- member: cn=group1.1.1.1,ou=groups,dc=github,dc=com
63
-
64
- dn: cn=group1.1.1.1,ou=groups,dc=github,dc=com
65
- cn: group1
66
- objectClass: groupOfNames
67
- member: uid=user1.1.1.1,ou=users,dc=github,dc=com
68
-
69
- # Users
70
-
71
- dn: ou=users,dc=github,dc=com
72
- objectclass: organizationalUnit
73
- ou: users
74
-
75
- dn: uid=calavera,ou=users,dc=github,dc=com
76
- cn: David Calavera
77
- cn: David
78
- sn: Calavera
79
- uid: calavera
80
- userPassword: passworD1
81
- mail: calavera@github.com
82
- objectClass: inetOrgPerson
83
-
84
- dn: uid=benburkert,ou=users,dc=github,dc=com
85
- cn: benburkert
86
- sn: benburkert
87
- uid: benburkert
88
- userPassword: passworD1
89
- mail: benburkert@github.com
90
- objectClass: inetOrgPerson
91
-
92
- dn: uid=sbryant,ou=users,dc=github,dc=com
93
- cn: sbryant
94
- sn: sbryant
95
- uid: sbryant
96
- userPassword: passworD1
97
- mail: sbryant@github.com
98
- objectClass: inetOrgPerson
99
-
100
- dn: uid=rubiojr,ou=users,dc=github,dc=com
101
- cn: rubiojr
102
- sn: rubiojr
103
- uid: rubiojr
104
- userPassword: passworD1
105
- mail: rubiojr@github.com
106
- objectClass: inetOrgPerson
107
-
108
- dn: uid=mtodd,ou=users,dc=github,dc=com
109
- cn: mtodd
110
- sn: mtodd
111
- uid: mtodd
112
- userPassword: passworD1
113
- mail: mtodd@github.com
114
- objectClass: inetOrgPerson
115
-
116
- dn: uid=user1,ou=users,dc=github,dc=com
117
- uid: user1
118
- sn: user1
119
- cn: user1
120
- userPassword: passworD1
121
- mail: user1@github.com
122
- objectClass: inetOrgPerson
123
-
124
- dn: uid=user1.1,ou=users,dc=github,dc=com
125
- uid: user1.1
126
- sn: user1.1
127
- cn: user1.1
128
- userPassword: passworD1
129
- mail: user1.1@github.com
130
- objectClass: inetOrgPerson
131
-
132
- dn: uid=user1.1.1,ou=users,dc=github,dc=com
133
- uid: user1.1.1
134
- sn: user1.1.1
135
- cn: user1.1.1
136
- userPassword: passworD1
137
- mail: user1.1.1@github.com
138
- objectClass: inetOrgPerson
139
-
140
- dn: uid=user1.1.1.1,ou=users,dc=github,dc=com
141
- uid: user1.1.1.1
142
- sn: user1.1.1.1
143
- cn: user1.1.1.1
144
- userPassword: passworD1
145
- mail: user1.1.1.1@github.com
146
- objectClass: inetOrgPerson