diff options
author | Morris Jobke <hey@morrisjobke.de> | 2017-11-28 20:16:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-28 20:16:32 +0100 |
commit | 90feccf4be7a1d9765e0a8769ce280775810d3fe (patch) | |
tree | c835de6f4b68d5e975193c86427c4ecff2e1b872 /tests/lib | |
parent | 036eae6956ca4a53c7487be10494574bace0ce79 (diff) | |
parent | 76a2fb0231acf86d87cb6d8026e7f08936a21f15 (diff) | |
download | nextcloud-server-90feccf4be7a1d9765e0a8769ce280775810d3fe.tar.gz nextcloud-server-90feccf4be7a1d9765e0a8769ce280775810d3fe.zip |
Merge pull request #7328 from nextcloud/backport/7327/access-list-regression-for-not-current-accesss
[stable12] Only in case of $currentAccess the array uses the id as index
Diffstat (limited to 'tests/lib')
-rw-r--r-- | tests/lib/Share20/ManagerTest.php | 115 |
1 files changed, 113 insertions, 2 deletions
diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 95831d19cd1..c2dda4dcf85 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -2938,6 +2938,115 @@ class ManagerTest extends \Test\TestCase { $this->defaultProvider->method('getAccessList') ->with( $this->equalTo([$file, $folder]), + false + ) + ->willReturn([ + 'users' => [ + 'user1', + 'user2', + 'user3', + '123456', + ], + 'public' => true, + ]); + + $extraProvider->method('getAccessList') + ->with( + $this->equalTo([$file, $folder]), + false + ) + ->willReturn([ + 'users' => [ + 'user3', + 'user4', + 'user5', + '234567', + ], + 'remote' => true, + ]); + + $this->rootFolder->method('getUserFolder') + ->with($this->equalTo('owner')) + ->willReturn($userFolder); + + $expected = [ + 'users' => ['owner', 'user1', 'user2', 'user3', '123456','user4', 'user5', '234567'], + 'remote' => true, + 'public' => true, + ]; + + $result = $manager->getAccessList($node, true, false); + + $this->assertSame($expected['public'], $result['public']); + $this->assertSame($expected['remote'], $result['remote']); + $this->assertSame($expected['users'], $result['users']); + + } + + public function testGetAccessListWithCurrentAccess() { + $factory = new DummyFactory2($this->createMock(IServerContainer::class)); + + $manager = new Manager( + $this->logger, + $this->config, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, + $this->l10nFactory, + $factory, + $this->userManager, + $this->rootFolder, + $this->eventDispatcher, + $this->mailer, + $this->urlGenerator, + $this->defaults + ); + + $factory->setProvider($this->defaultProvider); + $extraProvider = $this->createMock(IShareProvider::class); + $factory->setSecondProvider($extraProvider); + + $owner = $this->createMock(IUser::class); + $owner->expects($this->once()) + ->method('getUID') + ->willReturn('owner'); + + $node = $this->createMock(Node::class); + $node->expects($this->once()) + ->method('getOwner') + ->willReturn($owner); + $node->method('getId') + ->willReturn(42); + + $userFolder = $this->createMock(Folder::class); + $file = $this->createMock(File::class); + $folder = $this->createMock(Folder::class); + + $file->method('getParent') + ->willReturn($folder); + $file->method('getPath') + ->willReturn('/owner/files/folder/file'); + $file->method('getId') + ->willReturn(23); + $folder->method('getParent') + ->willReturn($userFolder); + $folder->method('getPath') + ->willReturn('/owner/files/folder'); + $userFolder->method('getById') + ->with($this->equalTo(42)) + ->willReturn([$file]); + $userFolder->method('getPath') + ->willReturn('/owner/files'); + + $this->userManager->method('userExists') + ->with($this->equalTo('owner')) + ->willReturn(true); + + $this->defaultProvider->method('getAccessList') + ->with( + $this->equalTo([$file, $folder]), true ) ->willReturn([ @@ -2945,6 +3054,7 @@ class ManagerTest extends \Test\TestCase { 'user1' => [], 'user2' => [], 'user3' => [], + '123456' => [], ], 'public' => true, ]); @@ -2959,6 +3069,7 @@ class ManagerTest extends \Test\TestCase { 'user3' => [], 'user4' => [], 'user5' => [], + '234567' => [], ], 'remote' => [ 'remote1', @@ -2975,7 +3086,7 @@ class ManagerTest extends \Test\TestCase { 'node_id' => 23, 'node_path' => '/folder/file' ] - , 'user1' => [], 'user2' => [], 'user3' => [], 'user4' => [], 'user5' => []], + , 'user1' => [], 'user2' => [], 'user3' => [], '123456' => [], 'user4' => [], 'user5' => [], '234567' => []], 'remote' => [ 'remote1', ], @@ -2986,7 +3097,7 @@ class ManagerTest extends \Test\TestCase { $this->assertSame($expected['public'], $result['public']); $this->assertSame($expected['remote'], $result['remote']); - $this->assertSame(array_values($expected['users']), array_values($result['users'])); + $this->assertSame($expected['users'], $result['users']); } } |