Skip to content

Commit 23e22c3

Browse files
committed
fixup! feat(files_sharing): add config option for extending link-share permissions
1 parent 27629b5 commit 23e22c3

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

apps/files_sharing/tests/ApiTest.php

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use OCP\Constants;
2121
use OCP\Files\Folder;
2222
use OCP\Files\IRootFolder;
23+
use OCP\IAppConfig;
2324
use OCP\IConfig;
2425
use OCP\IDateTimeZone;
2526
use OCP\IGroupManager;
@@ -34,6 +35,7 @@
3435
use OCP\Share\IProviderFactory;
3536
use OCP\Share\IShare;
3637
use OCP\UserStatus\IManager as IUserStatusManager;
38+
use PHPUnit\Framework\MockObject\MockObject;
3739
use Psr\Container\ContainerInterface;
3840
use Psr\Log\LoggerInterface;
3941

@@ -49,11 +51,9 @@ class ApiTest extends TestCase {
4951

5052
private static $tempStorage;
5153

52-
/** @var Folder */
53-
private $userFolder;
54-
55-
/** @var string */
56-
private $subsubfolder;
54+
private Folder $userFolder;
55+
private string $subsubfolder;
56+
protected IAppConfig&MockObject $appConfig;
5757

5858
protected function setUp(): void {
5959
parent::setUp();
@@ -80,6 +80,8 @@ protected function setUp(): void {
8080
$mount->getStorage()->getScanner()->scan('', Scanner::SCAN_RECURSIVE);
8181

8282
$this->userFolder = \OC::$server->getUserFolder(self::TEST_FILES_SHARING_API_USER1);
83+
84+
$this->appConfig = $this->createMock(IAppConfig::class);
8385
}
8486

8587
protected function tearDown(): void {
@@ -125,6 +127,7 @@ private function createOCS($userId) {
125127
Server::get(IURLGenerator::class),
126128
$l,
127129
$config,
130+
$this->appConfig,
128131
$appManager,
129132
$serverContainer,
130133
$userStatusManager,
@@ -232,8 +235,12 @@ public function testCreateShareLink(): void {
232235

233236
/**
234237
* @group RoutingWeirdness
238+
* @dataProvider dataAllowFederationOnPublicShares
235239
*/
236-
public function testCreateShareLinkPublicUpload(): void {
240+
public function testCreateShareLinkPublicUpload(array $appConfig, int $permissions): void {
241+
$this->appConfig->method('getValueBool')
242+
->willReturnMap([$appConfig]);
243+
237244
$ocs = $this->createOCS(self::TEST_FILES_SHARING_API_USER1);
238245
$result = $ocs->createShare($this->folder, Constants::PERMISSION_ALL, IShare::TYPE_LINK, null, 'true');
239246
$ocs->cleanup();
@@ -244,7 +251,7 @@ public function testCreateShareLinkPublicUpload(): void {
244251
Constants::PERMISSION_CREATE |
245252
Constants::PERMISSION_UPDATE |
246253
Constants::PERMISSION_DELETE |
247-
Constants::PERMISSION_SHARE,
254+
$permissions,
248255
$data['permissions']
249256
);
250257
$this->assertEmpty($data['expiration']);
@@ -1004,8 +1011,13 @@ public function testUpdateShare(): void {
10041011

10051012
/**
10061013
* @medium
1014+
* @dataProvider dataAllowFederationOnPublicShares
10071015
*/
1008-
public function testUpdateShareUpload(): void {
1016+
public function testUpdateShareUpload(array $appConfig, int $permissions): void {
1017+
$this->appConfig->method('getValueBool')->willReturnMap([
1018+
$appConfig,
1019+
]);
1020+
10091021
$node1 = $this->userFolder->get($this->folder);
10101022
$share1 = $this->shareManager->newShare();
10111023
$share1->setNode($node1)
@@ -1025,14 +1037,21 @@ public function testUpdateShareUpload(): void {
10251037
Constants::PERMISSION_CREATE |
10261038
Constants::PERMISSION_UPDATE |
10271039
Constants::PERMISSION_DELETE |
1028-
Constants::PERMISSION_SHARE,
1040+
$permissions,
10291041
$share1->getPermissions()
10301042
);
10311043

10321044
// cleanup
10331045
$this->shareManager->deleteShare($share1);
10341046
}
10351047

1048+
public static function dataAllowFederationOnPublicShares(): array {
1049+
return [
1050+
[['core', 'shareapi_allow_federation_on_public_shares', true, false], 0],
1051+
[['core', 'shareapi_allow_federation_on_public_shares', true, true], Constants::PERMISSION_SHARE],
1052+
];
1053+
}
1054+
10361055
/**
10371056
* @medium
10381057
*/

0 commit comments

Comments
 (0)