summaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/tests
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2020-03-12 15:24:38 +0100
committerArthur Schiwon <blizzz@arthur-schiwon.de>2020-04-17 12:39:54 +0200
commit32000dd1af8b4b9893c5dc6ebb6f34723f83b179 (patch)
treeecb0b3646e185ad214a6c6cde1b7de8ef7197d0d /apps/user_ldap/tests
parentcc31c3827749e2eeb3437648226413742ffe7dcd (diff)
downloadnextcloud-server-32000dd1af8b4b9893c5dc6ebb6f34723f83b179.tar.gz
nextcloud-server-32000dd1af8b4b9893c5dc6ebb6f34723f83b179.zip
read records from DB for lists at once, not one by one.
Keep a runtime cache of dn-id-mapping Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/user_ldap/tests')
-rw-r--r--apps/user_ldap/tests/Group_LDAPTest.php72
1 files changed, 48 insertions, 24 deletions
diff --git a/apps/user_ldap/tests/Group_LDAPTest.php b/apps/user_ldap/tests/Group_LDAPTest.php
index ae637e0e584..8dfcd335e85 100644
--- a/apps/user_ldap/tests/Group_LDAPTest.php
+++ b/apps/user_ldap/tests/Group_LDAPTest.php
@@ -79,7 +79,7 @@ class Group_LDAPTest extends TestCase {
private function getPluginManagerMock() {
return $this->getMockBuilder('\OCA\User_LDAP\GroupPluginManager')->getMock();
}
-
+
/**
* @param Access|\PHPUnit_Framework_MockObject_MockObject $access
*/
@@ -120,6 +120,9 @@ class Group_LDAPTest extends TestCase {
}
return [];
});
+ $access->expects($this->any())
+ ->method('isDNPartOfBase')
+ ->willReturn(true);
// for primary groups
$access->expects($this->once())
@@ -141,11 +144,9 @@ class Group_LDAPTest extends TestCase {
$access->expects($this->any())
->method('groupname2dn')
->willReturn('cn=group,dc=foo,dc=bar');
-
$access->expects($this->any())
->method('fetchListOfUsers')
->willReturn([]);
-
$access->expects($this->any())
->method('readAttribute')
->willReturnCallback(function ($name) {
@@ -159,12 +160,14 @@ class Group_LDAPTest extends TestCase {
}
return ['u11', 'u22', 'u33', 'u34'];
});
-
$access->expects($this->any())
->method('dn2username')
->willReturnCallback(function () {
return 'foobar' . \OC::$server->getSecureRandom()->generate(7);
});
+ $access->expects($this->any())
+ ->method('isDNPartOfBase')
+ ->willReturn(true);
$groupBackend = new GroupLDAP($access,$pluginManager);
$users = $groupBackend->countUsersInGroup('group', '3');
@@ -534,6 +537,9 @@ class Group_LDAPTest extends TestCase {
$access->expects($this->exactly(2))
->method('nextcloudUserNames')
->willReturnOnConsecutiveCalls(['lisa', 'bart', 'kira', 'brad'], ['walle', 'dino', 'xenia']);
+ $access->expects($this->any())
+ ->method('isDNPartOfBase')
+ ->willReturn(true);
$access->userManager = $this->createMock(Manager::class);
$groupBackend = new GroupLDAP($access, $pluginManager);
@@ -569,6 +575,9 @@ class Group_LDAPTest extends TestCase {
$access->expects($this->once())
->method('nextcloudUserNames')
->willReturn(['lisa', 'bart', 'kira', 'brad']);
+ $access->expects($this->any())
+ ->method('isDNPartOfBase')
+ ->willReturn(true);
$access->userManager = $this->createMock(Manager::class);
$groupBackend = new GroupLDAP($access, $pluginManager);
@@ -599,14 +608,15 @@ class Group_LDAPTest extends TestCase {
}
return [];
});
-
$access->expects($this->any())
->method('groupname2dn')
->willReturn('cn=foobar,dc=foo,dc=bar');
-
$access->expects($this->once())
->method('countUsers')
->willReturn(4);
+ $access->expects($this->any())
+ ->method('isDNPartOfBase')
+ ->willReturn(true);
$groupBackend = new GroupLDAP($access, $pluginManager);
$users = $groupBackend->countUsersInGroup('foobar');
@@ -629,17 +639,19 @@ class Group_LDAPTest extends TestCase {
->method('username2dn')
->willReturn($dn);
- $access->expects($this->exactly(3))
+ $access->expects($this->exactly(5))
->method('readAttribute')
- ->will($this->onConsecutiveCalls(['cn=groupA,dc=foobar', 'cn=groupB,dc=foobar'], [], []));
+ ->will($this->onConsecutiveCalls(['cn=groupA,dc=foobar', 'cn=groupB,dc=foobar'], [], [], [], []));
- $access->expects($this->exactly(2))
+ $access->expects($this->any())
->method('dn2groupname')
->willReturnArgument(0);
-
- $access->expects($this->exactly(1))
- ->method('groupsMatchFilter')
+ $access->expects($this->any())
+ ->method('groupname2dn')
->willReturnArgument(0);
+ $access->expects($this->any())
+ ->method('isDNPartOfBase')
+ ->willReturn(true);
$groupBackend = new GroupLDAP($access, $pluginManager);
$groups = $groupBackend->getUserGroups('userX');
@@ -677,9 +689,6 @@ class Group_LDAPTest extends TestCase {
$access->expects($this->once())
->method('nextcloudGroupNames')
->willReturn([]);
- $access->expects($this->any())
- ->method('groupsMatchFilter')
- ->willReturnArgument(0);
$groupBackend = new GroupLDAP($access, $pluginManager);
$groupBackend->getUserGroups('userX');
@@ -715,9 +724,9 @@ class Group_LDAPTest extends TestCase {
->method('username2dn')
->willReturn($dn);
- $access->expects($this->never())
+ $access->expects($this->any())
->method('readAttribute')
- ->with($dn, 'memberOf');
+ ->willReturn([]);
$group1 = [
'cn' => 'group1',
@@ -736,8 +745,23 @@ class Group_LDAPTest extends TestCase {
->method('fetchListOfGroups')
->willReturn([$group1, $group2]);
$access->expects($this->any())
- ->method('groupsMatchFilter')
- ->willReturnArgument(0);
+ ->method('dn2groupname')
+ ->willReturnCallback(function(string $dn) {
+ return ldap_explode_dn($dn, 1)[0];
+ });
+ $access->expects($this->any())
+ ->method('groupname2dn')
+ ->willReturnCallback(function (string $gid) use ($group1, $group2) {
+ if($gid === $group1['cn']) {
+ return $group1['dn'][0];
+ }
+ if($gid === $group2['cn']) {
+ return $group2['dn'][0];
+ }
+ });
+ $access->expects($this->any())
+ ->method('isDNPartOfBase')
+ ->willReturn(true);
$groupBackend = new GroupLDAP($access, $pluginManager);
$groups = $groupBackend->getUserGroups('userX');
@@ -771,7 +795,7 @@ class Group_LDAPTest extends TestCase {
$this->assertEquals($ldap->createGroup('gid'),true);
}
-
+
public function testCreateGroupFailing() {
$this->expectException(\Exception::class);
@@ -826,7 +850,7 @@ class Group_LDAPTest extends TestCase {
$this->assertEquals($ldap->deleteGroup('gid'),'result');
}
-
+
public function testDeleteGroupFailing() {
$this->expectException(\Exception::class);
@@ -872,7 +896,7 @@ class Group_LDAPTest extends TestCase {
$this->assertEquals($ldap->addToGroup('uid', 'gid'),'result');
}
-
+
public function testAddToGroupFailing() {
$this->expectException(\Exception::class);
@@ -918,7 +942,7 @@ class Group_LDAPTest extends TestCase {
$this->assertEquals($ldap->removeFromGroup('uid', 'gid'),'result');
}
-
+
public function testRemoveFromGroupFailing() {
$this->expectException(\Exception::class);
@@ -964,7 +988,7 @@ class Group_LDAPTest extends TestCase {
$this->assertEquals($ldap->getGroupDetails('gid'),'result');
}
-
+
public function testGetGroupDetailsFailing() {
$this->expectException(\Exception::class);