@@ -173,24 +173,18 @@ def self.test_server_options
173173 def setup
174174 @ldap = GitHub ::Ldap . new ( options )
175175 @domain = @ldap . domain ( "dc=github,dc=com" )
176-
177- @group = Net ::LDAP ::Entry . _load ( "" "
178- dn: cn=enterprise-posix-devs,ou=groups,dc=github,dc=com
179- cn: enterprise-posix-devs
180- objectClass: posixGroup
181- memberUid: benburkert
182- memberUid: mtodd" "" )
176+ @cn = "enterprise-posix-devs"
183177 end
184178
185179 def test_membership_for_posixGroups
186180 assert user = @ldap . domain ( 'uid=mtodd,ou=users,dc=github,dc=com' ) . bind
187181
188- assert @domain . is_member? ( user , @group . cn ) ,
189- "Expected `#{ @group . cn . first } ` to include the member `#{ user . dn } `"
182+ assert @domain . is_member? ( user , [ @cn ] ) ,
183+ "Expected `#{ @cn } ` to include the member `#{ user . dn } `"
190184 end
191185end
192186
193- class GitHubLdapPosixGroupsTest < GitHub ::Ldap ::Test
187+ class GitHubLdapPosixGroupsWithoutRecursionTest < GitHub ::Ldap ::Test
194188 def self . test_server_options
195189 {
196190 custom_schemas : FIXTURES . join ( 'posixGroup.schema.ldif' ) ,
@@ -203,19 +197,41 @@ def self.test_server_options
203197 def setup
204198 @ldap = GitHub ::Ldap . new ( options )
205199 @domain = @ldap . domain ( "dc=github,dc=com" )
200+ @cn = "enterprise-posix-devs"
201+ end
202+
203+ def test_membership_for_posixGroups
204+ assert user = @ldap . domain ( 'uid=mtodd,ou=users,dc=github,dc=com' ) . bind
206205
207- @group = Net ::LDAP ::Entry . _load ( "" "
208- dn: cn=enterprise-posix-devs,ou=groups,dc=github,dc=com
209- cn: enterprise-posix-devs
210- objectClass: posixGroup
211- memberUid: benburkert
212- memberUid: mtodd" "" )
206+ assert @domain . is_member? ( user , [ @cn ] ) ,
207+ "Expected `#{ @cn } ` to include the member `#{ user . dn } `"
208+ end
209+ end
210+
211+ # Specifically testing that this doesn't break when posixGroups are not
212+ # supported.
213+ class GitHubLdapWithoutPosixGroupsTest < GitHub ::Ldap ::Test
214+ def self . test_server_options
215+ {
216+ custom_schemas : FIXTURES . join ( 'posixGroup.schema.ldif' ) ,
217+ user_fixtures : FIXTURES . join ( 'github-with-posixGroups.ldif' ) . to_s ,
218+ # so we test the test the non-recursive group membership search
219+ recursive_group_search_fallback : false ,
220+ # explicitly disable posixGroup support (even if the schema supports it)
221+ posix_support : false
222+ }
223+ end
224+
225+ def setup
226+ @ldap = GitHub ::Ldap . new ( options )
227+ @domain = @ldap . domain ( "dc=github,dc=com" )
228+ @cn = "enterprise-posix-devs"
213229 end
214230
215231 def test_membership_for_posixGroups
216232 assert user = @ldap . domain ( 'uid=mtodd,ou=users,dc=github,dc=com' ) . bind
217233
218- assert @domain . is_member? ( user , @group . cn ) ,
219- "Expected `#{ @group . cn . first } ` to include the member `#{ user . dn } `"
234+ refute @domain . is_member? ( user , [ @cn ] ) ,
235+ "Expected `#{ @cn } ` to not include the member `#{ user . dn } `"
220236 end
221237end
0 commit comments