2020use OCP \Constants ;
2121use OCP \Files \Folder ;
2222use OCP \Files \IRootFolder ;
23+ use OCP \IAppConfig ;
2324use OCP \IConfig ;
2425use OCP \IDateTimeZone ;
2526use OCP \IGroupManager ;
3435use OCP \Share \IProviderFactory ;
3536use OCP \Share \IShare ;
3637use OCP \UserStatus \IManager as IUserStatusManager ;
38+ use PHPUnit \Framework \MockObject \MockObject ;
3739use Psr \Container \ContainerInterface ;
3840use 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