]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix default share provider
authorJoas Schilling <coding@schilljs.com>
Mon, 10 Apr 2017 14:22:12 +0000 (16:22 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Thu, 13 Apr 2017 10:58:52 +0000 (12:58 +0200)
Signed-off-by: Joas Schilling <coding@schilljs.com>
lib/private/Share20/DefaultShareProvider.php
tests/lib/Share20/DefaultShareProviderTest.php

index 49a756f2a10b6d6bf5a5c6bf8de551afbd622584..b28dc56f8520a72ab9a3bf4a80cf812fc741df5c 100644 (file)
@@ -1128,17 +1128,18 @@ class DefaultShareProvider implements IShareProvider {
                                }
                        } else if ($type === \OCP\Share::SHARE_TYPE_LINK) {
                                $link = true;
-                       } else if ($type === self::SHARE_TYPE_USERGROUP) {
-                               if ($currentAccess === true) {
-                                       $uid = $row['share_with'];
-                                       $users[$uid] = isset($users[$uid]) ? $users[$uid] : [];
-                                       $users[$uid][$row['id']] = $row;
-                               }
+                       } else if ($type === self::SHARE_TYPE_USERGROUP && $currentAccess === true) {
+                               $uid = $row['share_with'];
+                               $users[$uid] = isset($users[$uid]) ? $users[$uid] : [];
+                               $users[$uid][$row['id']] = $row;
                        }
                }
                $cursor->closeCursor();
 
                $users = array_map([$this, 'filterSharesOfUser'], $users);
+               if ($currentAccess === true) {
+                       $users = array_filter($users);
+               }
 
                return ['users' => $users, 'public' => $link];
        }
index a7f5555efafac720af7f828ead74fde7bd69731b..6c351f1a6d95a7cada835cca291b4ecbd70fd1af 100644 (file)
@@ -1545,9 +1545,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
                $this->assertEquals(1, $stmt);
                $id = $qb->getLastInsertId();
 
-               $user1 = $this->getMock('\OCP\IUser');
+               $user1 = $this->createMock(IUser::class);
                $user1->method('getUID')->willReturn('user1');
-               $user2 = $this->getMock('\OCP\IUser');
+               $user2 = $this->createMock(IUser::class);
                $user2->method('getUID')->willReturn('user2');
                $this->userManager->method('get')->will($this->returnValueMap([
                        ['user1', $user1],
@@ -1556,7 +1556,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
 
                $this->groupManager->method('get')->with('group')->willReturn(null);
 
-               $file = $this->getMock('\OCP\Files\File');
+               $file = $this->createMock(File::class);
                $file->method('getId')->willReturn(1);
 
                $this->rootFolder->method('getUserFolder')->with('user1')->will($this->returnSelf());
@@ -2503,10 +2503,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
                $result = $provider->getAccessList([$folder1, $folder2, $file1], false);
 
                $this->assertCount(4, $result['users']);
-               $this->assertContains('testShare2', $result['users']);
-               $this->assertContains('testShare3', $result['users']);
-               $this->assertContains('testShare4', $result['users']);
-               $this->assertContains('testShare5', $result['users']);
+               $this->assertArrayHasKey('testShare2', $result['users']);
+               $this->assertArrayHasKey('testShare3', $result['users']);
+               $this->assertArrayHasKey('testShare4', $result['users']);
+               $this->assertArrayHasKey('testShare5', $result['users']);
                $this->assertTrue($result['public']);
 
                $provider->delete($share1);
@@ -2590,9 +2590,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
                $result = $provider->getAccessList([$folder1, $folder2, $file1], true);
 
                $this->assertCount(3, $result['users']);
-               $this->assertContains('testShare2', $result['users']);
-               $this->assertContains('testShare3', $result['users']);
-               $this->assertContains('testShare5', $result['users']);
+               $this->assertArrayHasKey('testShare2', $result['users']);
+               $this->assertArrayHasKey('testShare3', $result['users']);
+               $this->assertArrayHasKey('testShare5', $result['users']);
                $this->assertTrue($result['public']);
 
                $provider->delete($share1);