]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add unit tests for encryption's isSystemWideMountPoint 32690/head
authorVincent Petry <vincent@nextcloud.com>
Wed, 1 Jun 2022 16:01:59 +0000 (18:01 +0200)
committerVincent Petry <vincent@nextcloud.com>
Wed, 1 Jun 2022 16:10:59 +0000 (18:10 +0200)
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
tests/lib/Encryption/UtilTest.php

index 84d81dd1cbb4bed1dc64ac4f36ff3306fa182f46..02155be11ddab2fb4416dced481ab1729325fff4 100644 (file)
@@ -4,6 +4,8 @@ namespace Test\Encryption;
 
 use OC\Encryption\Util;
 use OC\Files\View;
+use OCA\Files_External\Lib\StorageConfig;
+use OCA\Files_External\Service\GlobalStoragesService;
 use OCP\Encryption\IEncryptionModule;
 use OCP\IConfig;
 use Test\TestCase;
@@ -188,4 +190,43 @@ class UtilTest extends TestCase {
                        ['/foo/test.txt.ocTransferId7567.part', '/foo/test.txt'],
                ];
        }
+
+       public function dataTestIsSystemWideMountPoint() {
+               return [
+                       [false, 'non-matching mount point name', [], [], '/mp_another'],
+                       [true, 'applicable to all', [], []],
+                       [true, 'applicable to user directly', ['user1'], []],
+                       [true, 'applicable to group directly', [], ['group1']],
+                       [false, 'non-applicable to current user', ['user2'], []],
+                       [false, 'non-applicable to current user\'s group', [], ['group2']],
+                       [true, 'mount point without leading slash', [], [], 'mp'],
+               ];
+       }
+
+       /**
+        * @dataProvider dataTestIsSystemWideMountPoint
+        */
+       public function testIsSystemWideMountPoint($expectedResult, $expectationText, $applicableUsers, $applicableGroups, $mountPointName = '/mp') {
+               $this->groupManager->method('isInGroup')
+                        ->will($this->returnValueMap([
+                               ['user1', 'group1', true], // user is only in group1
+                               ['user1', 'group2', false],
+                        ]));
+
+               $storages = [];
+
+               $storageConfig = $this->createMock(StorageConfig::class);
+               $storageConfig->method('getMountPoint')->willReturn($mountPointName);
+               $storageConfig->method('getApplicableUsers')->willReturn($applicableUsers);
+               $storageConfig->method('getApplicableGroups')->willReturn($applicableGroups);
+               $storages[] = $storageConfig;
+
+               $storagesServiceMock = $this->createMock(GlobalStoragesService::class);
+               $storagesServiceMock->expects($this->atLeastOnce())->method('getAllStorages')
+                       ->willReturn($storages);
+
+               $this->overwriteService(GlobalStoragesService::class, $storagesServiceMock);
+
+               $this->assertEquals($expectedResult, $this->util->isSystemWideMountPoint('/files/mp', 'user1'), 'Test case: ' . $expectationText);
+       }
 }