aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/Group
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2017-01-19 15:02:46 +0100
committerMorris Jobke <hey@morrisjobke.de>2017-03-17 00:07:03 -0600
commit377fdf3860e317b68392c678fa25e081251baecc (patch)
tree3ca0e680377018a10df0dbf4999dd27d679e3c43 /tests/lib/Group
parent39afcbd49feb4ba333746762fe7c9d4701db9860 (diff)
downloadnextcloud-server-377fdf3860e317b68392c678fa25e081251baecc.tar.gz
nextcloud-server-377fdf3860e317b68392c678fa25e081251baecc.zip
Skip null groups in group manager (#26871) (#26956)
* Skip null groups in group manager (#26871) * Skip null groups in group manager * Also skip null groups in group manager's search function * Add more group null checks in sharing code * Add unit tests for null group safety in group manager * Add unit tests for sharing code null group checks * Added tests for null groups handling in sharing code * Ignore moveShare optional repair in mount provider In some cases, data is inconsistent in the oc_share table due to legacy data. The mount provider might attempt to make it consistent but if the target group does not exist any more it cannot work. In such case we simply ignore the exception as it is not critical. Keeping the exception would break user accounts as they would be unable to use their filesystem. * Adjust null group handing + tests * Fix new group manager tests Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'tests/lib/Group')
-rw-r--r--tests/lib/Group/ManagerTest.php56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/lib/Group/ManagerTest.php b/tests/lib/Group/ManagerTest.php
index 1a7ced5f1ba..c57ef0b34cb 100644
--- a/tests/lib/Group/ManagerTest.php
+++ b/tests/lib/Group/ManagerTest.php
@@ -302,6 +302,32 @@ class ManagerTest extends \Test\TestCase {
$this->assertEquals('group12', $group12->getGID());
}
+ public function testSearchResultExistsButGroupDoesNot() {
+ /**
+ * @var \PHPUnit_Framework_MockObject_MockObject | \OC\Group\Backend $backend
+ */
+ $backend = $this->createMock('\OC\Group\Database');
+ $backend->expects($this->once())
+ ->method('getGroups')
+ ->with('1')
+ ->will($this->returnValue(['group1']));
+ $backend->expects($this->once())
+ ->method('groupExists')
+ ->with('group1')
+ ->will($this->returnValue(false));
+
+ /**
+ * @var \OC\User\Manager $userManager
+ */
+ $userManager = $this->createMock('\OC\User\Manager');
+
+ $manager = new \OC\Group\Manager($userManager);
+ $manager->addBackend($backend);
+
+ $groups = $manager->search('1');
+ $this->assertEmpty($groups);
+ }
+
public function testGetUserGroups() {
/**
* @var \PHPUnit_Framework_MockObject_MockObject | \OC\Group\Backend $backend
@@ -351,6 +377,36 @@ class ManagerTest extends \Test\TestCase {
}
}
+ public function testGetUserGroupsWithDeletedGroup() {
+ /**
+ * @var \PHPUnit_Framework_MockObject_MockObject | \OC\Group\Backend $backend
+ */
+ $backend = $this->createMock('\OC\Group\Database');
+ $backend->expects($this->once())
+ ->method('getUserGroups')
+ ->with('user1')
+ ->will($this->returnValue(array('group1')));
+ $backend->expects($this->any())
+ ->method('groupExists')
+ ->with('group1')
+ ->will($this->returnValue(false));
+
+ /**
+ * @var \OC\User\Manager $userManager
+ */
+ $userManager = $this->createMock('\OC\User\Manager');
+ $userBackend = $this->createMock('\OC_User_Backend');
+ $manager = new \OC\Group\Manager($userManager);
+ $manager->addBackend($backend);
+
+ /** @var \OC\User\User $user */
+ $user = $this->createMock(IUser::class);
+ $user->method('getUID')->willReturn('user1');
+
+ $groups = $manager->getUserGroups($user);
+ $this->assertEmpty($groups);
+ }
+
public function testInGroup() {
/**
* @var \PHPUnit_Framework_MockObject_MockObject | \OC\Group\Backend $backend