diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2018-02-23 12:04:48 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2018-02-26 13:33:25 +0100 |
commit | b02d3a27bae60363d01e04d7d4bb495415598d91 (patch) | |
tree | a1c0e24f9546726e42d507b9742e884d81fbc75c /apps/user_ldap | |
parent | 7e424e52a3a7d62c3d553c0c743b94c7512ac2ec (diff) | |
download | nextcloud-server-b02d3a27bae60363d01e04d7d4bb495415598d91.tar.gz nextcloud-server-b02d3a27bae60363d01e04d7d4bb495415598d91.zip |
tests for retrieving group members with numerical uids
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/user_ldap')
-rw-r--r-- | apps/user_ldap/tests/Group_LDAPTest.php | 87 |
1 files changed, 85 insertions, 2 deletions
diff --git a/apps/user_ldap/tests/Group_LDAPTest.php b/apps/user_ldap/tests/Group_LDAPTest.php index e758bc9bd02..e9ed1e66b20 100644 --- a/apps/user_ldap/tests/Group_LDAPTest.php +++ b/apps/user_ldap/tests/Group_LDAPTest.php @@ -39,6 +39,7 @@ use OCA\User_LDAP\Connection; use OCA\User_LDAP\Group_LDAP as GroupLDAP; use OCA\User_LDAP\ILDAPWrapper; use OCA\User_LDAP\User\Manager; +use Test\TestCase; /** * Class GroupLDAPTest @@ -47,7 +48,7 @@ use OCA\User_LDAP\User\Manager; * * @package OCA\User_LDAP\Tests */ -class Group_LDAPTest extends \Test\TestCase { +class Group_LDAPTest extends TestCase { /** * @return \PHPUnit_Framework_MockObject_MockObject|Access */ @@ -965,6 +966,88 @@ class Group_LDAPTest extends \Test\TestCase { $ldap = new GroupLDAP($access, $pluginManager); $ldap->getGroupDetails('gid'); - } + } + + public function groupMemberProvider() { + $base = 'dc=species,dc=earth'; + + $groups0 = [ + 'uid=3723,' . $base, + 'uid=8372,' . $base, + 'uid=8427,' . $base, + 'uid=2333,' . $base, + 'uid=4754,' . $base, + ]; + $groups1 = [ + '3723', + '8372', + '8427', + '2333', + '4754', + ]; + $groups2Nested = ['6642', '1424']; + $expGroups2 = array_merge($groups1, $groups2Nested); + + return [ + [ #0 – test DNs + 'cn=Birds,' . $base, + $groups0, + ['cn=Birds,' . $base => $groups0] + ], + [ #1 – test uids + 'cn=Birds,' . $base, + $groups1, + ['cn=Birds,' . $base => $groups1] + ], + [ #2 – test uids with nested groups + 'cn=Birds,' . $base, + $expGroups2, + [ + 'cn=Birds,' . $base => $groups1, + '8427' => $groups2Nested, // simplified - nested groups would work with DNs + ], + ], + ]; + } + + /** + * @param string $groupDN + * @param string[] $expectedMembers + * @param array $groupsInfo + * @dataProvider groupMemberProvider + */ + public function testGroupMembers($groupDN, $expectedMembers, $groupsInfo = null) { + $access = $this->getAccessMock(); + $access->expects($this->any()) + ->method('readAttribute') + ->willReturnCallback(function($group) use ($groupDN, $expectedMembers, $groupsInfo) { + if(isset($groupsInfo[$group])) { + return $groupsInfo[$group]; + } + return []; + }); + + $access->connection = $this->createMock(Connection::class); + if(count($groupsInfo) > 1) { + $access->connection->expects($this->any()) + ->method('__get') + ->willReturnCallback(function($name) { + if($name === 'ldapNestedGroups') { + return 1; + } + return null; + }); + } + + /** @var GroupPluginManager $pluginManager */ + $pluginManager = $this->createMock(GroupPluginManager::class); + + $ldap = new GroupLDAP($access, $pluginManager); + $resultingMembers = $this->invokePrivate($ldap, '_groupMembers', [$groupDN]); + + $expected = array_keys(array_flip($expectedMembers)); + + $this->assertEquals($expected, array_keys($resultingMembers), '', 0.0, 10, true); + } } |