summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@owncloud.com>2015-11-05 11:50:57 +0100
committerArthur Schiwon <blizzz@owncloud.com>2015-11-05 11:50:57 +0100
commit51ead4e59bc3695a2279758b0b410f3e2b5478e7 (patch)
treee36847b68a704b5cd8c53f9ce97cbf0f2ac58be6
parent6e7461f64caf8211f554e7e723d25a1b99b80bf8 (diff)
downloadnextcloud-server-51ead4e59bc3695a2279758b0b410f3e2b5478e7.tar.gz
nextcloud-server-51ead4e59bc3695a2279758b0b410f3e2b5478e7.zip
subadmin methods should not return any null user or group
-rw-r--r--lib/private/subadmin.php22
-rw-r--r--tests/lib/subadmin.php31
2 files changed, 47 insertions, 6 deletions
diff --git a/lib/private/subadmin.php b/lib/private/subadmin.php
index c00a2b24669..c96275e3b87 100644
--- a/lib/private/subadmin.php
+++ b/lib/private/subadmin.php
@@ -119,7 +119,10 @@ class SubAdmin extends PublicEmitter {
$groups = [];
while($row = $result->fetch()) {
- $groups[] = $this->groupManager->get($row['gid']);
+ $group = $this->groupManager->get($row['gid']);
+ if(!is_null($group)) {
+ $groups[] = $group;
+ }
}
$result->closeCursor();
@@ -141,7 +144,10 @@ class SubAdmin extends PublicEmitter {
$users = [];
while($row = $result->fetch()) {
- $users[] = $this->userManager->get($row['uid']);
+ $user = $this->userManager->get($row['uid']);
+ if(!is_null($user)) {
+ $users[] = $user;
+ }
}
$result->closeCursor();
@@ -161,10 +167,14 @@ class SubAdmin extends PublicEmitter {
$subadmins = [];
while($row = $result->fetch()) {
- $subadmins[] = [
- 'user' => $this->userManager->get($row['uid']),
- 'group' => $this->groupManager->get($row['gid'])
- ];
+ $user = $this->userManager->get($row['uid']);
+ $group = $this->groupManager->get($row['gid']);
+ if(!is_null($user) && !is_null($group)) {
+ $subadmins[] = [
+ 'user' => $user,
+ 'group' => $group
+ ];
+ }
}
$result->closeCursor();
diff --git a/tests/lib/subadmin.php b/tests/lib/subadmin.php
index 0855e514c7e..960943c22f5 100644
--- a/tests/lib/subadmin.php
+++ b/tests/lib/subadmin.php
@@ -55,6 +55,28 @@ class SubAdmin extends \Test\TestCase {
if (!$this->groupManager->groupExists('admin')) {
$this->groupManager->createGroup('admin');
}
+
+ // Create "orphaned" users and groups (scenario: temporarily disabled
+ // backend)
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->insert('group_admin')
+ ->values([
+ 'gid' => $qb->createNamedParameter($this->groups[0]->getGID()),
+ 'uid' => $qb->createNamedParameter('orphanedUser')
+ ])
+ ->execute();
+ $qb->insert('group_admin')
+ ->values([
+ 'gid' => $qb->createNamedParameter('orphanedGroup'),
+ 'uid' => $qb->createNamedParameter('orphanedUser')
+ ])
+ ->execute();
+ $qb->insert('group_admin')
+ ->values([
+ 'gid' => $qb->createNamedParameter('orphanedGroup'),
+ 'uid' => $qb->createNamedParameter($this->users[0]->getUID())
+ ])
+ ->execute();
}
public function tearDown() {
@@ -65,6 +87,12 @@ class SubAdmin extends \Test\TestCase {
foreach($this->groups as $group) {
$group->delete();
}
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->delete('group_admin')
+ ->where($qb->expr()->eq('uid', $qb->createNamedParameter('orphanedUser')))
+ ->orWhere($qb->expr()->eq('gid', $qb->createNamedParameter('orphanedGroup')))
+ ->execute();
}
public function testCreateSubAdmin() {
@@ -118,6 +146,7 @@ class SubAdmin extends \Test\TestCase {
$this->assertContains($this->groups[0], $result);
$this->assertContains($this->groups[1], $result);
$this->assertNotContains($this->groups[2], $result);
+ $this->assertNotContains(null, $result);
$this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]));
$this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[1]));
@@ -133,6 +162,7 @@ class SubAdmin extends \Test\TestCase {
$this->assertContains($this->users[0], $result);
$this->assertContains($this->users[1], $result);
$this->assertNotContains($this->users[2], $result);
+ $this->assertNotContains(null, $result);
$this->assertTrue($subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]));
$this->assertTrue($subAdmin->deleteSubAdmin($this->users[1], $this->groups[0]));
@@ -150,6 +180,7 @@ class SubAdmin extends \Test\TestCase {
$this->assertContains(['user' => $this->users[0], 'group' => $this->groups[0]], $result);
$this->assertContains(['user' => $this->users[1], 'group' => $this->groups[1]], $result);
$this->assertContains(['user' => $this->users[2], 'group' => $this->groups[1]], $result);
+ $this->assertNotContains(['user' => null, 'group' => null], $result);
}
public function testIsSubAdminofGroup() {