Initial LDAP group member iteration support
Add interface for group member iteration on internal auth providers and implement support in the LDAP interface.
This commit is contained in:
		
							parent
							
								
									df235d9315
								
							
						
					
					
						commit
						d718829f5d
					
				
					 4 changed files with 141 additions and 34 deletions
				
			
		|  | @ -34,18 +34,25 @@ def mock_ldap(requires_email=True): | |||
|       'dc': ['quay', 'io'], | ||||
|       'ou': 'otheremployees' | ||||
|     }, | ||||
|     'cn=AwesomeFolk,dc=quay,dc=io': { | ||||
|       'dc': ['quay', 'io'], | ||||
|       'cn': 'AwesomeFolk' | ||||
|     }, | ||||
|     'uid=testy,ou=employees,dc=quay,dc=io': { | ||||
|       'dc': ['quay', 'io'], | ||||
|       'ou': 'employees', | ||||
|       'uid': 'testy', | ||||
|       'userPassword': ['password'] | ||||
|       'uid': ['testy'], | ||||
|       'userPassword': ['password'], | ||||
|       'mail': ['bar@baz.com'], | ||||
|       'memberOf': ['cn=AwesomeFolk,dc=quay,dc=io'], | ||||
|     }, | ||||
|     'uid=someuser,ou=employees,dc=quay,dc=io': { | ||||
|       'dc': ['quay', 'io'], | ||||
|       'ou': 'employees', | ||||
|       'uid': ['someuser'], | ||||
|       'userPassword': ['somepass'], | ||||
|       'mail': ['foo@bar.com'] | ||||
|       'mail': ['foo@bar.com'], | ||||
|       'memberOf': ['cn=AwesomeFolk,dc=quay,dc=io'], | ||||
|     }, | ||||
|     'uid=nomail,ou=employees,dc=quay,dc=io': { | ||||
|       'dc': ['quay', 'io'], | ||||
|  | @ -301,6 +308,25 @@ class TestLDAP(unittest.TestCase): | |||
|                        requires_email=False, timeout=5) | ||||
|       ldap.query_users('cool') | ||||
| 
 | ||||
|   def test_iterate_group_members(self): | ||||
|     with mock_ldap() as ldap: | ||||
|       (it, err) = ldap.iterate_group_members({'group_dn': 'cn=AwesomeFolk'}, | ||||
|                                              disable_pagination=True) | ||||
|       self.assertIsNone(err) | ||||
| 
 | ||||
|       results = list(it) | ||||
|       self.assertEquals(2, len(results)) | ||||
| 
 | ||||
|       first = results[0][0] | ||||
|       self.assertEquals('testy', first.id) | ||||
|       self.assertEquals('testy', first.username) | ||||
|       self.assertEquals('bar@baz.com', first.email) | ||||
| 
 | ||||
|       second = results[1][0] | ||||
|       self.assertEquals('someuser', second.id) | ||||
|       self.assertEquals('someuser', second.username) | ||||
|       self.assertEquals('foo@bar.com', second.email) | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|   unittest.main() | ||||
| 
 | ||||
|  |  | |||
		Reference in a new issue