aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/Share20/DefaultShareProviderTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/Share20/DefaultShareProviderTest.php')
-rw-r--r--tests/lib/Share20/DefaultShareProviderTest.php477
1 files changed, 315 insertions, 162 deletions
diff --git a/tests/lib/Share20/DefaultShareProviderTest.php b/tests/lib/Share20/DefaultShareProviderTest.php
index e138f2f576b..bacf2b61ee3 100644
--- a/tests/lib/Share20/DefaultShareProviderTest.php
+++ b/tests/lib/Share20/DefaultShareProviderTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -7,14 +8,19 @@
namespace Test\Share20;
+use OC\Files\Node\Node;
use OC\Share20\DefaultShareProvider;
+use OC\Share20\Exception\ProviderException;
+use OC\Share20\Share;
use OC\Share20\ShareAttributes;
use OCP\AppFramework\Utility\ITimeFactory;
+use OCP\Constants;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Defaults;
use OCP\Files\File;
use OCP\Files\Folder;
use OCP\Files\IRootFolder;
+use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroup;
use OCP\IGroupManager;
@@ -24,9 +30,12 @@ use OCP\IUser;
use OCP\IUserManager;
use OCP\L10N\IFactory;
use OCP\Mail\IMailer;
+use OCP\Server;
+use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IManager as IShareManager;
use OCP\Share\IShare;
use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
/**
* Class DefaultShareProviderTest
@@ -68,8 +77,15 @@ class DefaultShareProviderTest extends \Test\TestCase {
/** @var ITimeFactory|MockObject */
protected $timeFactory;
+ /** @var LoggerInterface|MockObject */
+ protected $logger;
+
+ protected IConfig&MockObject $config;
+
+ protected IShareManager&MockObject $shareManager;
+
protected function setUp(): void {
- $this->dbConn = \OC::$server->getDatabaseConnection();
+ $this->dbConn = Server::get(IDBConnection::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->groupManager = $this->createMock(IGroupManager::class);
$this->rootFolder = $this->createMock(IRootFolder::class);
@@ -79,9 +95,12 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->defaults = $this->getMockBuilder(Defaults::class)->disableOriginalConstructor()->getMock();
$this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
+ $this->shareManager = $this->createMock(IShareManager::class);
+ $this->config = $this->createMock(IConfig::class);
$this->userManager->expects($this->any())->method('userExists')->willReturn(true);
- $this->timeFactory->expects($this->any())->method('now')->willReturn(new \DateTimeImmutable("2023-05-04 00:00 Europe/Berlin"));
+ $this->timeFactory->expects($this->any())->method('now')->willReturn(new \DateTimeImmutable('2023-05-04 00:00 Europe/Berlin'));
//Empty share table
$this->dbConn->getQueryBuilder()->delete('share')->execute();
@@ -95,13 +114,16 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->defaults,
$this->l10nFactory,
$this->urlGenerator,
- $this->timeFactory
+ $this->timeFactory,
+ $this->logger,
+ $this->shareManager,
+ $this->config,
);
}
protected function tearDown(): void {
$this->dbConn->getQueryBuilder()->delete('share')->execute();
- $this->dbConn->getQueryBuilder()->delete('filecache')->execute();
+ $this->dbConn->getQueryBuilder()->delete('filecache')->runAcrossAllShards()->execute();
$this->dbConn->getQueryBuilder()->delete('storages')->execute();
}
@@ -152,7 +174,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$qb->setValue('token', $qb->expr()->literal($token));
}
if ($expiration) {
- $qb->setValue('expiration', $qb->createNamedParameter($expiration, IQueryBuilder::PARAM_DATE));
+ $qb->setValue('expiration', $qb->createNamedParameter($expiration, IQueryBuilder::PARAM_DATETIME_MUTABLE));
}
if ($parent) {
$qb->setValue('parent', $qb->expr()->literal($parent));
@@ -165,13 +187,13 @@ class DefaultShareProviderTest extends \Test\TestCase {
- public function testGetShareByIdNotExist() {
- $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
+ public function testGetShareByIdNotExist(): void {
+ $this->expectException(ShareNotFound::class);
$this->provider->getShareById(1);
}
- public function testGetShareByIdUserShare() {
+ public function testGetShareByIdUserShare(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
@@ -218,7 +240,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('myTarget', $share->getTarget());
}
- public function testGetShareByIdLazy() {
+ public function testGetShareByIdLazy(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
@@ -253,7 +275,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('myTarget', $share->getTarget());
}
- public function testGetShareByIdLazy2() {
+ public function testGetShareByIdLazy2(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
@@ -297,7 +319,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('myTarget', $share->getTarget());
}
- public function testGetShareByIdGroupShare() {
+ public function testGetShareByIdGroupShare(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
@@ -321,10 +343,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
$shareOwnerFolder->method('getFirstNodeById')->with(42)->willReturn($ownerPath);
$this->rootFolder
- ->method('getUserFolder')
- ->willReturnMap([
- ['shareOwner', $shareOwnerFolder],
- ]);
+ ->method('getUserFolder')
+ ->willReturnMap([
+ ['shareOwner', $shareOwnerFolder],
+ ]);
$share = $this->provider->getShareById($id);
@@ -340,7 +362,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('myTarget', $share->getTarget());
}
- public function testGetShareByIdUserGroupShare() {
+ public function testGetShareByIdUserGroupShare(): void {
$id = $this->addShareToDB(IShare::TYPE_GROUP, 'group0', 'user0', 'user0', 'file', 42, 'myTarget', 31, null, null);
$this->addShareToDB(2, 'user1', 'user0', 'user0', 'file', 42, 'userTarget', 0, null, null, $id);
@@ -355,6 +377,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$node = $this->createMock(Folder::class);
$node->method('getId')->willReturn(42);
+ $node->method('getName')->willReturn('myTarget');
$this->rootFolder->method('getUserFolder')->with('user0')->willReturnSelf();
$this->rootFolder->method('getFirstNodeById')->willReturn($node);
@@ -379,7 +402,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('userTarget', $share->getTarget());
}
- public function testGetShareByIdLinkShare() {
+ public function testGetShareByIdLinkShare(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
@@ -405,10 +428,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
$shareOwnerFolder->method('getFirstNodeById')->with(42)->willReturn($ownerPath);
$this->rootFolder
- ->method('getUserFolder')
- ->willReturnMap([
- ['shareOwner', $shareOwnerFolder],
- ]);
+ ->method('getUserFolder')
+ ->willReturnMap([
+ ['shareOwner', $shareOwnerFolder],
+ ]);
$share = $this->provider->getShareById($id);
@@ -426,7 +449,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('myTarget', $share->getTarget());
}
- public function testDeleteSingleShare() {
+ public function testDeleteSingleShare(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->values([
@@ -456,9 +479,12 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->defaults,
$this->l10nFactory,
$this->urlGenerator,
- $this->timeFactory
+ $this->timeFactory,
+ $this->logger,
+ $this->shareManager,
+ $this->config,
])
- ->setMethods(['getShareById'])
+ ->onlyMethods(['getShareById'])
->getMock();
$provider->delete($share);
@@ -474,7 +500,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEmpty($result);
}
- public function testDeleteSingleShareLazy() {
+ public function testDeleteSingleShareLazy(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->values([
@@ -507,7 +533,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEmpty($result);
}
- public function testDeleteGroupShareWithUserGroupShares() {
+ public function testDeleteGroupShareWithUserGroupShares(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->values([
@@ -551,9 +577,12 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->defaults,
$this->l10nFactory,
$this->urlGenerator,
- $this->timeFactory
+ $this->timeFactory,
+ $this->logger,
+ $this->shareManager,
+ $this->config,
])
- ->setMethods(['getShareById'])
+ ->onlyMethods(['getShareById'])
->getMock();
$provider->delete($share);
@@ -569,7 +598,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEmpty($result);
}
- public function testGetChildren() {
+ public function testGetChildren(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->values([
@@ -657,8 +686,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('myTarget2', $children[1]->getTarget());
}
- public function testCreateUserShare() {
- $share = new \OC\Share20\Share($this->rootFolder, $this->userManager);
+ public function testCreateUserShare(): void {
+ $share = new Share($this->rootFolder, $this->userManager);
$shareOwner = $this->createMock(IUser::class);
$shareOwner->method('getUID')->willReturn('shareOwner');
@@ -701,7 +730,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$share2 = $this->provider->create($share);
$this->assertNotNull($share2->getId());
- $this->assertSame('ocinternal:'.$share2->getId(), $share2->getFullId());
+ $this->assertSame('ocinternal:' . $share2->getId(), $share2->getFullId());
$this->assertSame(IShare::TYPE_USER, $share2->getShareType());
$this->assertSame('sharedWith', $share2->getSharedWith());
$this->assertSame('sharedBy', $share2->getSharedBy());
@@ -722,15 +751,15 @@ class DefaultShareProviderTest extends \Test\TestCase {
[
'scope' => 'permissions',
'key' => 'download',
- 'enabled' => true
+ 'value' => true
]
],
$share->getAttributes()->toArray()
);
}
- public function testCreateGroupShare() {
- $share = new \OC\Share20\Share($this->rootFolder, $this->userManager);
+ public function testCreateGroupShare(): void {
+ $share = new Share($this->rootFolder, $this->userManager);
$shareOwner = $this->createMock(IUser::class);
$shareOwner->method('getUID')->willReturn('shareOwner');
@@ -771,7 +800,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$share2 = $this->provider->create($share);
$this->assertNotNull($share2->getId());
- $this->assertSame('ocinternal:'.$share2->getId(), $share2->getFullId());
+ $this->assertSame('ocinternal:' . $share2->getId(), $share2->getFullId());
$this->assertSame(IShare::TYPE_GROUP, $share2->getShareType());
$this->assertSame('sharedWith', $share2->getSharedWith());
$this->assertSame('sharedBy', $share2->getSharedBy());
@@ -792,15 +821,15 @@ class DefaultShareProviderTest extends \Test\TestCase {
[
'scope' => 'permissions',
'key' => 'download',
- 'enabled' => true
+ 'value' => true
]
],
$share->getAttributes()->toArray()
);
}
- public function testCreateLinkShare() {
- $share = new \OC\Share20\Share($this->rootFolder, $this->userManager);
+ public function testCreateLinkShare(): void {
+ $share = new Share($this->rootFolder, $this->userManager);
$shareOwner = $this->createMock(IUser::class);
$shareOwner->method('getUID')->willReturn('shareOwner');
@@ -812,18 +841,18 @@ class DefaultShareProviderTest extends \Test\TestCase {
$ownerFolder = $this->createMock(Folder::class);
$userFolder = $this->createMock(Folder::class);
$this->rootFolder
- ->method('getUserFolder')
- ->willReturnMap([
- ['sharedBy', $userFolder],
- ['shareOwner', $ownerFolder],
- ]);
+ ->method('getUserFolder')
+ ->willReturnMap([
+ ['sharedBy', $userFolder],
+ ['shareOwner', $ownerFolder],
+ ]);
$userFolder->method('getFirstNodeById')
- ->with(100)
- ->willReturn($path);
+ ->with(100)
+ ->willReturn($path);
$ownerFolder->method('getFirstNodeById')
- ->with(100)
- ->willReturn($path);
+ ->with(100)
+ ->willReturn($path);
$share->setShareType(IShare::TYPE_LINK);
$share->setSharedBy('sharedBy');
@@ -840,7 +869,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$share2 = $this->provider->create($share);
$this->assertNotNull($share2->getId());
- $this->assertSame('ocinternal:'.$share2->getId(), $share2->getFullId());
+ $this->assertSame('ocinternal:' . $share2->getId(), $share2->getFullId());
$this->assertSame(IShare::TYPE_LINK, $share2->getShareType());
$this->assertSame('sharedBy', $share2->getSharedBy());
$this->assertSame('shareOwner', $share2->getShareOwner());
@@ -854,7 +883,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals($expireDate->getTimestamp(), $share2->getExpirationDate()->getTimestamp());
}
- public function testGetShareByToken() {
+ public function testGetShareByToken(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
@@ -869,6 +898,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
'file_target' => $qb->expr()->literal('myTarget'),
'permissions' => $qb->expr()->literal(13),
'token' => $qb->expr()->literal('secrettoken'),
+ 'label' => $qb->expr()->literal('the label'),
]);
$qb->execute();
$id = $qb->getLastInsertId();
@@ -884,13 +914,46 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('sharedBy', $share->getSharedBy());
$this->assertSame('secrettoken', $share->getToken());
$this->assertSame('password', $share->getPassword());
+ $this->assertSame('the label', $share->getLabel());
$this->assertSame(true, $share->getSendPasswordByTalk());
$this->assertSame(null, $share->getSharedWith());
}
+ /**
+ * Assert that if no label is provided the label is correctly,
+ * as types on IShare, a string and not null
+ */
+ public function testGetShareByTokenNullLabel(): void {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->insert('share')
+ ->values([
+ 'share_type' => $qb->expr()->literal(IShare::TYPE_LINK),
+ 'password' => $qb->expr()->literal('password'),
+ 'password_by_talk' => $qb->expr()->literal(true),
+ 'uid_owner' => $qb->expr()->literal('shareOwner'),
+ 'uid_initiator' => $qb->expr()->literal('sharedBy'),
+ 'item_type' => $qb->expr()->literal('file'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'file_target' => $qb->expr()->literal('myTarget'),
+ 'permissions' => $qb->expr()->literal(13),
+ 'token' => $qb->expr()->literal('secrettoken'),
+ ]);
+ $qb->executeStatement();
+ $id = $qb->getLastInsertId();
+
+ $file = $this->createMock(File::class);
- public function testGetShareByTokenNotFound() {
- $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
+ $this->rootFolder->method('getUserFolder')->with('shareOwner')->willReturnSelf();
+ $this->rootFolder->method('getFirstNodeById')->with(42)->willReturn($file);
+
+ $share = $this->provider->getShareByToken('secrettoken');
+ $this->assertEquals($id, $share->getId());
+ $this->assertSame('', $share->getLabel());
+ }
+
+ public function testGetShareByTokenNotFound(): void {
+ $this->expectException(ShareNotFound::class);
$this->provider->getShareByToken('invalidtoken');
}
@@ -909,16 +972,16 @@ class DefaultShareProviderTest extends \Test\TestCase {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('filecache')
->values([
- 'storage' => $qb->expr()->literal($storage),
- 'path' => $qb->expr()->literal($path),
- 'path_hash' => $qb->expr()->literal(md5($path)),
- 'name' => $qb->expr()->literal(basename($path)),
+ 'storage' => $qb->createNamedParameter($storage, IQueryBuilder::PARAM_INT),
+ 'path' => $qb->createNamedParameter($path),
+ 'path_hash' => $qb->createNamedParameter(md5($path)),
+ 'name' => $qb->createNamedParameter(basename($path)),
]);
$this->assertEquals(1, $qb->execute());
return $qb->getLastInsertId();
}
- public function storageAndFileNameProvider() {
+ public static function storageAndFileNameProvider(): array {
return [
// regular file on regular storage
['home::shareOwner', 'files/test.txt', 'files/test2.txt'],
@@ -929,10 +992,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider storageAndFileNameProvider
- */
- public function testGetSharedWithUser($storageStringId, $fileName1, $fileName2) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('storageAndFileNameProvider')]
+ public function testGetSharedWithUser($storageStringId, $fileName1, $fileName2): void {
$storageId = $this->createTestStorageEntry($storageStringId);
$fileId = $this->createTestFileEntry($fileName1, $storageId);
$fileId2 = $this->createTestFileEntry($fileName2, $storageId);
@@ -980,10 +1041,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals(IShare::TYPE_USER, $share->getShareType());
}
- /**
- * @dataProvider storageAndFileNameProvider
- */
- public function testGetSharedWithGroup($storageStringId, $fileName1, $fileName2) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('storageAndFileNameProvider')]
+ public function testGetSharedWithGroup($storageStringId, $fileName1, $fileName2): void {
$storageId = $this->createTestStorageEntry($storageStringId);
$fileId = $this->createTestFileEntry($fileName1, $storageId);
$fileId2 = $this->createTestFileEntry($fileName2, $storageId);
@@ -1018,7 +1077,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$groups = [];
foreach (range(0, 100) as $i) {
- $groups[] = 'group'.$i;
+ $groups[] = 'group' . $i;
}
$groups[] = 'sharedWith';
@@ -1054,10 +1113,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals(IShare::TYPE_GROUP, $share->getShareType());
}
- /**
- * @dataProvider storageAndFileNameProvider
- */
- public function testGetSharedWithGroupUserModified($storageStringId, $fileName1, $fileName2) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('storageAndFileNameProvider')]
+ public function testGetSharedWithGroupUserModified($storageStringId, $fileName1, $fileName2): void {
$storageId = $this->createTestStorageEntry($storageStringId);
$fileId = $this->createTestFileEntry($fileName1, $storageId);
$qb = $this->dbConn->getQueryBuilder();
@@ -1146,10 +1203,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('userTarget', $share->getTarget());
}
- /**
- * @dataProvider storageAndFileNameProvider
- */
- public function testGetSharedWithUserWithNode($storageStringId, $fileName1, $fileName2) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('storageAndFileNameProvider')]
+ public function testGetSharedWithUserWithNode($storageStringId, $fileName1, $fileName2): void {
$storageId = $this->createTestStorageEntry($storageStringId);
$fileId = $this->createTestFileEntry($fileName1, $storageId);
$fileId2 = $this->createTestFileEntry($fileName2, $storageId);
@@ -1188,10 +1243,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals(IShare::TYPE_USER, $share->getShareType());
}
- /**
- * @dataProvider storageAndFileNameProvider
- */
- public function testGetSharedWithGroupWithNode($storageStringId, $fileName1, $fileName2) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('storageAndFileNameProvider')]
+ public function testGetSharedWithGroupWithNode($storageStringId, $fileName1, $fileName2): void {
$storageId = $this->createTestStorageEntry($storageStringId);
$fileId = $this->createTestFileEntry($fileName1, $storageId);
$fileId2 = $this->createTestFileEntry($fileName2, $storageId);
@@ -1231,7 +1284,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals(IShare::TYPE_GROUP, $share->getShareType());
}
- public function shareTypesProvider() {
+ public static function shareTypesProvider(): array {
return [
[IShare::TYPE_USER, false],
[IShare::TYPE_GROUP, false],
@@ -1240,10 +1293,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider shareTypesProvider
- */
- public function testGetSharedWithWithDeletedFile($shareType, $trashed) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('shareTypesProvider')]
+ public function testGetSharedWithWithDeletedFile($shareType, $trashed): void {
if ($trashed) {
// exists in database but is in trash
$storageId = $this->createTestStorageEntry('home::shareOwner');
@@ -1272,7 +1323,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$groups = [];
foreach (range(0, 100) as $i) {
- $groups[] = 'group'.$i;
+ $groups[] = 'group' . $i;
}
$groups[] = 'sharedWith';
@@ -1297,7 +1348,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertCount(0, $share);
}
- public function testGetSharesBy() {
+ public function testGetSharesBy(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->values([
@@ -1346,7 +1397,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('myTarget', $share->getTarget());
}
- public function testGetSharesNode() {
+ public function testGetSharesNode(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->values([
@@ -1396,7 +1447,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('myTarget', $share->getTarget());
}
- public function testGetSharesReshare() {
+ public function testGetSharesReshare(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->values([
@@ -1455,7 +1506,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('userTarget', $share->getTarget());
}
- public function testDeleteFromSelfGroupNoCustomShare() {
+ public function testDeleteFromSelfGroupNoCustomShare(): void {
$qb = $this->dbConn->getQueryBuilder();
$stmt = $qb->insert('share')
->values([
@@ -1512,7 +1563,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('user2', $share2['share_with']);
}
- public function testDeleteFromSelfGroupAlreadyCustomShare() {
+ public function testDeleteFromSelfGroupAlreadyCustomShare(): void {
$qb = $this->dbConn->getQueryBuilder();
$stmt = $qb->insert('share')
->values([
@@ -1585,7 +1636,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
}
- public function testDeleteFromSelfGroupUserNotInGroup() {
+ public function testDeleteFromSelfGroupUserNotInGroup(): void {
$qb = $this->dbConn->getQueryBuilder();
$stmt = $qb->insert('share')
->values([
@@ -1628,8 +1679,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
}
- public function testDeleteFromSelfGroupDoesNotExist() {
- $this->expectException(\OC\Share20\Exception\ProviderException::class);
+ public function testDeleteFromSelfGroupDoesNotExist(): void {
+ $this->expectException(ProviderException::class);
$this->expectExceptionMessage('Group "group" does not exist');
$qb = $this->dbConn->getQueryBuilder();
@@ -1669,7 +1720,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->provider->deleteFromSelf($share, 'user2');
}
- public function testDeleteFromSelfUser() {
+ public function testDeleteFromSelfUser(): void {
$qb = $this->dbConn->getQueryBuilder();
$stmt = $qb->insert('share')
->values([
@@ -1719,8 +1770,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
}
- public function testDeleteFromSelfUserNotRecipient() {
- $this->expectException(\OC\Share20\Exception\ProviderException::class);
+ public function testDeleteFromSelfUserNotRecipient(): void {
+ $this->expectException(ProviderException::class);
$this->expectExceptionMessage('Recipient does not match');
$qb = $this->dbConn->getQueryBuilder();
@@ -1762,8 +1813,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
}
- public function testDeleteFromSelfLink() {
- $this->expectException(\OC\Share20\Exception\ProviderException::class);
+ public function testDeleteFromSelfLink(): void {
+ $this->expectException(ProviderException::class);
$this->expectExceptionMessage('Invalid shareType');
$qb = $this->dbConn->getQueryBuilder();
@@ -1798,16 +1849,16 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->provider->deleteFromSelf($share, $user1);
}
- public function testUpdateUser() {
+ public function testUpdateUser(): void {
$id = $this->addShareToDB(IShare::TYPE_USER, 'user0', 'user1', 'user2',
'file', 42, 'target', 31, null, null);
$users = [];
for ($i = 0; $i < 6; $i++) {
$user = $this->createMock(IUser::class);
- $user->method('getUID')->willReturn('user'.$i);
+ $user->method('getUID')->willReturn('user' . $i);
$user->method('getDisplayName')->willReturn('user' . $i);
- $users['user'.$i] = $user;
+ $users['user' . $i] = $user;
}
$this->userManager->method('get')->willReturnCallback(
@@ -1856,15 +1907,15 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame(1, $share2->getPermissions());
}
- public function testUpdateLink() {
+ public function testUpdateLink(): void {
$id = $this->addShareToDB(IShare::TYPE_LINK, null, 'user1', 'user2',
'file', 42, 'target', 31, null, null);
$users = [];
for ($i = 0; $i < 6; $i++) {
$user = $this->createMock(IUser::class);
- $user->method('getUID')->willReturn('user'.$i);
- $users['user'.$i] = $user;
+ $user->method('getUID')->willReturn('user' . $i);
+ $users['user' . $i] = $user;
}
$this->userManager->method('get')->willReturnCallback(
@@ -1916,7 +1967,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame(1, $share2->getPermissions());
}
- public function testUpdateLinkRemovePassword() {
+ public function testUpdateLinkRemovePassword(): void {
$id = $this->addShareToDB(IShare::TYPE_LINK, 'foo', 'user1', 'user2',
'file', 42, 'target', 31, null, null);
@@ -1929,8 +1980,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
$users = [];
for ($i = 0; $i < 6; $i++) {
$user = $this->createMock(IUser::class);
- $user->method('getUID')->willReturn('user'.$i);
- $users['user'.$i] = $user;
+ $user->method('getUID')->willReturn('user' . $i);
+ $users['user' . $i] = $user;
}
$this->userManager->method('get')->willReturnCallback(
@@ -1979,15 +2030,15 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame(1, $share2->getPermissions());
}
- public function testUpdateGroupNoSub() {
+ public function testUpdateGroupNoSub(): void {
$id = $this->addShareToDB(IShare::TYPE_GROUP, 'group0', 'user1', 'user2',
'file', 42, 'target', 31, null, null);
$users = [];
for ($i = 0; $i < 6; $i++) {
$user = $this->createMock(IUser::class);
- $user->method('getUID')->willReturn('user'.$i);
- $users['user'.$i] = $user;
+ $user->method('getUID')->willReturn('user' . $i);
+ $users['user' . $i] = $user;
}
$this->userManager->method('get')->willReturnCallback(
@@ -1999,9 +2050,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
$groups = [];
for ($i = 0; $i < 2; $i++) {
$group = $this->createMock(IGroup::class);
- $group->method('getGID')->willReturn('group'.$i);
+ $group->method('getGID')->willReturn('group' . $i);
$group->method('getDisplayName')->willReturn('group-displayname' . $i);
- $groups['group'.$i] = $group;
+ $groups['group' . $i] = $group;
}
$this->groupManager->method('get')->willReturnCallback(
@@ -2052,7 +2103,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame(1, $share2->getPermissions());
}
- public function testUpdateGroupSubShares() {
+ public function testUpdateGroupSubShares(): void {
$id = $this->addShareToDB(IShare::TYPE_GROUP, 'group0', 'user1', 'user2',
'file', 42, 'target', 31, null, null);
@@ -2065,8 +2116,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
$users = [];
for ($i = 0; $i < 6; $i++) {
$user = $this->createMock(IUser::class);
- $user->method('getUID')->willReturn('user'.$i);
- $users['user'.$i] = $user;
+ $user->method('getUID')->willReturn('user' . $i);
+ $users['user' . $i] = $user;
}
$this->userManager->method('get')->willReturnCallback(
@@ -2078,9 +2129,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
$groups = [];
for ($i = 0; $i < 2; $i++) {
$group = $this->createMock(IGroup::class);
- $group->method('getGID')->willReturn('group'.$i);
- $group->method('getDisplayName')->willReturn('group-displayname'.$i);
- $groups['group'.$i] = $group;
+ $group->method('getGID')->willReturn('group' . $i);
+ $group->method('getDisplayName')->willReturn('group-displayname' . $i);
+ $groups['group' . $i] = $group;
}
$this->groupManager->method('get')->willReturnCallback(
@@ -2153,7 +2204,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$stmt->closeCursor();
}
- public function testMoveUserShare() {
+ public function testMoveUserShare(): void {
$id = $this->addShareToDB(IShare::TYPE_USER, 'user0', 'user1', 'user1', 'file',
42, 'mytaret', 31, null, null);
@@ -2184,7 +2235,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('/newTarget', $share->getTarget());
}
- public function testMoveGroupShare() {
+ public function testMoveGroupShare(): void {
$id = $this->addShareToDB(IShare::TYPE_GROUP, 'group0', 'user1', 'user1', 'file',
42, 'mytaret', 31, null, null);
@@ -2226,7 +2277,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('/ultraNewTarget', $share->getTarget());
}
- public function dataDeleteUser() {
+ public static function dataDeleteUser(): array {
return [
[IShare::TYPE_USER, 'a', 'b', 'c', 'a', true],
[IShare::TYPE_USER, 'a', 'b', 'c', 'b', false],
@@ -2246,7 +2297,6 @@ class DefaultShareProviderTest extends \Test\TestCase {
}
/**
- * @dataProvider dataDeleteUser
*
* @param int $type The shareType (user/group/link)
* @param string $owner The owner of the share (uid)
@@ -2255,7 +2305,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
* @param string $deletedUser The user that is deleted
* @param bool $rowDeleted Is the row deleted in this setup
*/
- public function testDeleteUser($type, $owner, $initiator, $recipient, $deletedUser, $rowDeleted) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataDeleteUser')]
+ public function testDeleteUser($type, $owner, $initiator, $recipient, $deletedUser, $rowDeleted): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->setValue('share_type', $qb->createNamedParameter($type))
@@ -2284,7 +2335,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertCount($rowDeleted ? 0 : 1, $data);
}
- public function dataDeleteUserGroup() {
+ public static function dataDeleteUserGroup(): array {
return [
['a', 'b', 'c', 'a', true, true],
['a', 'b', 'c', 'b', false, false],
@@ -2294,7 +2345,6 @@ class DefaultShareProviderTest extends \Test\TestCase {
}
/**
- * @dataProvider dataDeleteUserGroup
*
* @param string $owner The owner of the share (uid)
* @param string $initiator The initiator of the share (uid)
@@ -2303,7 +2353,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
* @param bool $groupShareDeleted
* @param bool $userGroupShareDeleted
*/
- public function testDeleteUserGroup($owner, $initiator, $recipient, $deletedUser, $groupShareDeleted, $userGroupShareDeleted) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataDeleteUserGroup')]
+ public function testDeleteUserGroup($owner, $initiator, $recipient, $deletedUser, $groupShareDeleted, $userGroupShareDeleted): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->setValue('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP))
@@ -2353,7 +2404,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertCount($groupShareDeleted ? 0 : 1, $data);
}
- public function dataGroupDeleted() {
+ public static function dataGroupDeleted(): array {
return [
[
[
@@ -2400,13 +2451,13 @@ class DefaultShareProviderTest extends \Test\TestCase {
}
/**
- * @dataProvider dataGroupDeleted
*
* @param $shares
* @param $groupToDelete
* @param $shouldBeDeleted
*/
- public function testGroupDeleted($shares, $groupToDelete, $shouldBeDeleted) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataGroupDeleted')]
+ public function testGroupDeleted($shares, $groupToDelete, $shouldBeDeleted): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->setValue('share_type', $qb->createNamedParameter($shares['type']))
@@ -2447,7 +2498,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertCount($shouldBeDeleted ? 0 : count($ids), $data);
}
- public function dataUserDeletedFromGroup() {
+ public static function dataUserDeletedFromGroup(): array {
return [
['group1', 'user1', true],
['group1', 'user2', false],
@@ -2460,13 +2511,13 @@ class DefaultShareProviderTest extends \Test\TestCase {
* And a user specific group share with 'user1'.
* User $user is deleted from group $gid.
*
- * @dataProvider dataUserDeletedFromGroup
*
* @param string $group
* @param string $user
* @param bool $toDelete
*/
- public function testUserDeletedFromGroup($group, $user, $toDelete) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataUserDeletedFromGroup')]
+ public function testUserDeletedFromGroup($group, $user, $toDelete): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->setValue('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP))
@@ -2505,10 +2556,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertCount($toDelete ? 0 : 1, $data);
}
- public function testGetSharesInFolder() {
- $userManager = \OC::$server->getUserManager();
- $groupManager = \OC::$server->getGroupManager();
- $rootFolder = \OC::$server->get(IRootFolder::class);
+ public function testGetSharesInFolder(): void {
+ $userManager = Server::get(IUserManager::class);
+ $groupManager = Server::get(IGroupManager::class);
+ $rootFolder = Server::get(IRootFolder::class);
$provider = new DefaultShareProvider(
$this->dbConn,
@@ -2519,7 +2570,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->defaults,
$this->l10nFactory,
$this->urlGenerator,
- $this->timeFactory
+ $this->timeFactory,
+ $this->logger,
+ $this->shareManager,
+ $this->config,
);
$password = md5(time());
@@ -2535,14 +2589,14 @@ class DefaultShareProviderTest extends \Test\TestCase {
$file1 = $folder1->newFile('bar');
$folder2 = $folder1->newFolder('baz');
- $shareManager = \OC::$server->get(IShareManager::class);
+ $shareManager = Server::get(IShareManager::class);
$share1 = $shareManager->newShare();
$share1->setNode($folder1)
->setSharedBy($u1->getUID())
->setSharedWith($u2->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_USER)
- ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ ->setPermissions(Constants::PERMISSION_ALL);
$share1 = $this->provider->create($share1);
$share2 = $shareManager->newShare();
@@ -2551,7 +2605,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setSharedWith($u3->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_USER)
- ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ ->setPermissions(Constants::PERMISSION_READ);
$share2 = $this->provider->create($share2);
$share3 = $shareManager->newShare();
@@ -2559,7 +2613,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setSharedBy($u2->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_LINK)
- ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ ->setPermissions(Constants::PERMISSION_READ);
$share3 = $this->provider->create($share3);
$share4 = $shareManager->newShare();
@@ -2568,7 +2622,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setSharedWith($g1->getGID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_GROUP)
- ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ ->setPermissions(Constants::PERMISSION_READ);
$share4 = $this->provider->create($share4);
$result = $provider->getSharesInFolder($u1->getUID(), $folder1, false);
@@ -2603,10 +2657,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
$g1->delete();
}
- public function testGetAccessListNoCurrentAccessRequired() {
- $userManager = \OC::$server->getUserManager();
- $groupManager = \OC::$server->getGroupManager();
- $rootFolder = \OC::$server->get(IRootFolder::class);
+ public function testGetAccessListNoCurrentAccessRequired(): void {
+ $userManager = Server::get(IUserManager::class);
+ $groupManager = Server::get(IGroupManager::class);
+ $rootFolder = Server::get(IRootFolder::class);
$provider = new DefaultShareProvider(
$this->dbConn,
@@ -2617,7 +2671,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->defaults,
$this->l10nFactory,
$this->urlGenerator,
- $this->timeFactory
+ $this->timeFactory,
+ $this->logger,
+ $this->shareManager,
+ $this->config,
);
$u1 = $userManager->createUser('testShare1', 'test');
@@ -2639,15 +2696,16 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertCount(0, $result['users']);
$this->assertFalse($result['public']);
- $shareManager = \OC::$server->get(IShareManager::class);
+ $shareManager = Server::get(IShareManager::class);
$share1 = $shareManager->newShare();
$share1->setNode($folder1)
->setSharedBy($u1->getUID())
->setSharedWith($u2->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_USER)
- ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ ->setPermissions(Constants::PERMISSION_ALL);
$share1 = $this->provider->create($share1);
+ $share1 = $provider->acceptShare($share1, $u2->getUid());
$share2 = $shareManager->newShare();
$share2->setNode($folder2)
@@ -2655,17 +2713,20 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setSharedWith($g1->getGID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_GROUP)
- ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ ->setPermissions(Constants::PERMISSION_ALL);
$share2 = $this->provider->create($share2);
$shareManager->deleteFromSelf($share2, $u4->getUID());
+ $share2 = $provider->acceptShare($share2, $u3->getUid());
+ $share2 = $provider->acceptShare($share2, $u4->getUid());
+
$share3 = $shareManager->newShare();
$share3->setNode($file1)
->setSharedBy($u3->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_LINK)
- ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ ->setPermissions(Constants::PERMISSION_READ);
$share3 = $this->provider->create($share3);
$share4 = $shareManager->newShare();
@@ -2674,8 +2735,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setSharedWith($u5->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_USER)
- ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ ->setPermissions(Constants::PERMISSION_READ);
$share4 = $this->provider->create($share4);
+ $share4 = $provider->acceptShare($share4, $u5->getUid());
$result = $provider->getAccessList([$folder1, $folder2, $file1], false);
@@ -2699,10 +2761,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
$g1->delete();
}
- public function testGetAccessListCurrentAccessRequired() {
- $userManager = \OC::$server->getUserManager();
- $groupManager = \OC::$server->getGroupManager();
- $rootFolder = \OC::$server->get(IRootFolder::class);
+ public function testGetAccessListCurrentAccessRequired(): void {
+ $userManager = Server::get(IUserManager::class);
+ $groupManager = Server::get(IGroupManager::class);
+ $rootFolder = Server::get(IRootFolder::class);
$provider = new DefaultShareProvider(
$this->dbConn,
@@ -2713,7 +2775,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->defaults,
$this->l10nFactory,
$this->urlGenerator,
- $this->timeFactory
+ $this->timeFactory,
+ $this->logger,
+ $this->shareManager,
+ $this->config,
);
$u1 = $userManager->createUser('testShare1', 'test');
@@ -2735,15 +2800,16 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertCount(0, $result['users']);
$this->assertFalse($result['public']);
- $shareManager = \OC::$server->get(IShareManager::class);
+ $shareManager = Server::get(IShareManager::class);
$share1 = $shareManager->newShare();
$share1->setNode($folder1)
->setSharedBy($u1->getUID())
->setSharedWith($u2->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_USER)
- ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ ->setPermissions(Constants::PERMISSION_ALL);
$share1 = $this->provider->create($share1);
+ $share1 = $provider->acceptShare($share1, $u2->getUid());
$share2 = $shareManager->newShare();
$share2->setNode($folder2)
@@ -2751,8 +2817,10 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setSharedWith($g1->getGID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_GROUP)
- ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ ->setPermissions(Constants::PERMISSION_ALL);
$share2 = $this->provider->create($share2);
+ $share2 = $provider->acceptShare($share2, $u3->getUid());
+ $share2 = $provider->acceptShare($share2, $u4->getUid());
$shareManager->deleteFromSelf($share2, $u4->getUID());
@@ -2761,7 +2829,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setSharedBy($u3->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_LINK)
- ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ ->setPermissions(Constants::PERMISSION_READ);
$share3 = $this->provider->create($share3);
$share4 = $shareManager->newShare();
@@ -2770,8 +2838,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setSharedWith($u5->getUID())
->setShareOwner($u1->getUID())
->setShareType(IShare::TYPE_USER)
- ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ ->setPermissions(Constants::PERMISSION_READ);
$share4 = $this->provider->create($share4);
+ $share4 = $provider->acceptShare($share4, $u5->getUid());
$result = $provider->getAccessList([$folder1, $folder2, $file1], true);
@@ -2794,7 +2863,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$g1->delete();
}
- public function testGetAllShares() {
+ public function testGetAllShares(): void {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
@@ -2958,4 +3027,88 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals('token5', $share->getToken());
$this->assertEquals('myTarget5', $share->getTarget());
}
+
+
+ public function testGetSharesByPath(): void {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->insert('share')
+ ->values([
+ 'share_type' => $qb->expr()->literal(IShare::TYPE_USER),
+ 'uid_owner' => $qb->expr()->literal('user1'),
+ 'uid_initiator' => $qb->expr()->literal('user1'),
+ 'share_with' => $qb->expr()->literal('user2'),
+ 'item_type' => $qb->expr()->literal('file'),
+ 'file_source' => $qb->expr()->literal(1),
+ ]);
+ $qb->execute();
+
+ $id1 = $qb->getLastInsertId();
+
+ $qb->insert('share')
+ ->values([
+ 'share_type' => $qb->expr()->literal(IShare::TYPE_GROUP),
+ 'uid_owner' => $qb->expr()->literal('user1'),
+ 'uid_initiator' => $qb->expr()->literal('user1'),
+ 'share_with' => $qb->expr()->literal('user2'),
+ 'item_type' => $qb->expr()->literal('file'),
+ 'file_source' => $qb->expr()->literal(1),
+ ]);
+ $qb->execute();
+
+ $id2 = $qb->getLastInsertId();
+
+ $qb->insert('share')
+ ->values([
+ 'share_type' => $qb->expr()->literal(IShare::TYPE_LINK),
+ 'uid_owner' => $qb->expr()->literal('user1'),
+ 'uid_initiator' => $qb->expr()->literal('user1'),
+ 'share_with' => $qb->expr()->literal('user2'),
+ 'item_type' => $qb->expr()->literal('file'),
+ 'file_source' => $qb->expr()->literal(1),
+ ]);
+ $qb->execute();
+
+ $id3 = $qb->getLastInsertId();
+
+ $ownerPath1 = $this->createMock(File::class);
+ $shareOwner1Folder = $this->createMock(Folder::class);
+ $shareOwner1Folder->method('getFirstNodeById')->willReturn($ownerPath1);
+
+ $ownerPath2 = $this->createMock(File::class);
+ $shareOwner2Folder = $this->createMock(Folder::class);
+ $shareOwner2Folder->method('getFirstNodeById')->willReturn($ownerPath2);
+
+ $ownerPath3 = $this->createMock(File::class);
+ $shareOwner3Folder = $this->createMock(Folder::class);
+ $shareOwner3Folder->method('getFirstNodeById')->willReturn($ownerPath3);
+
+ $this->rootFolder
+ ->method('getUserFolder')
+ ->willReturnMap(
+ [
+ ['shareOwner1', $shareOwner1Folder],
+ ['shareOwner2', $shareOwner2Folder],
+ ['shareOwner3', $shareOwner3Folder],
+ ]
+ );
+
+ $node = $this->createMock(Node::class);
+ $node
+ ->expects($this->once())
+ ->method('getId')
+ ->willReturn(1);
+
+ $shares = $this->provider->getSharesByPath($node);
+ $this->assertCount(3, $shares);
+
+ $this->assertEquals($id1, $shares[0]->getId());
+ $this->assertEquals(IShare::TYPE_USER, $shares[0]->getShareType());
+
+ $this->assertEquals($id2, $shares[1]->getId());
+ $this->assertEquals(IShare::TYPE_GROUP, $shares[1]->getShareType());
+
+ $this->assertEquals($id3, $shares[2]->getId());
+ $this->assertEquals(IShare::TYPE_LINK, $shares[2]->getShareType());
+ }
}