|
25 | 25 | * along with this program. If not, see <http://www.gnu.org/licenses/> |
26 | 26 | * |
27 | 27 | */ |
| 28 | + |
28 | 29 | namespace OCA\DAV\Tests\unit\Connector\Sabre; |
29 | 30 |
|
30 | 31 | use OC\Files\FileInfo; |
| 32 | +use OC\Files\Mount\MountPoint; |
31 | 33 | use OC\Files\View; |
32 | 34 | use OC\Share20\ShareAttributes; |
| 35 | +use OCA\Files_Sharing\SharedMount; |
33 | 36 | use OCA\Files_Sharing\SharedStorage; |
| 37 | +use OCP\Constants; |
| 38 | +use OCP\Files\Cache\ICacheEntry; |
34 | 39 | use OCP\Files\Mount\IMountPoint; |
35 | 40 | use OCP\Files\Storage; |
| 41 | +use OCP\ICache; |
36 | 42 | use OCP\Share\IAttributes; |
37 | 43 | use OCP\Share\IManager; |
38 | 44 | use OCP\Share\IShare; |
|
46 | 52 | class NodeTest extends \Test\TestCase { |
47 | 53 | public function davPermissionsProvider() { |
48 | 54 | return [ |
49 | | - [\OCP\Constants::PERMISSION_ALL, 'file', false, false, 'RGDNVW'], |
50 | | - [\OCP\Constants::PERMISSION_ALL, 'dir', false, false, 'RGDNVCK'], |
51 | | - [\OCP\Constants::PERMISSION_ALL, 'file', true, false, 'SRGDNVW'], |
52 | | - [\OCP\Constants::PERMISSION_ALL, 'file', true, true, 'SRMGDNVW'], |
53 | | - [\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_SHARE, 'file', true, false, 'SGDNVW'], |
54 | | - [\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_UPDATE, 'file', false, false, 'RGD'], |
55 | | - [\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_DELETE, 'file', false, false, 'RGNVW'], |
56 | | - [\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE, 'file', false, false, 'RGDNVW'], |
57 | | - [\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_READ, 'file', false, false, 'RDNVW'], |
58 | | - [\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE, 'dir', false, false, 'RGDNV'], |
59 | | - [\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_READ, 'dir', false, false, 'RDNVCK'], |
| 55 | + [Constants::PERMISSION_ALL, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RGDNVW'], |
| 56 | + [Constants::PERMISSION_ALL, 'dir', false, Constants::PERMISSION_ALL, false, 'test', 'RGDNVCK'], |
| 57 | + [Constants::PERMISSION_ALL, 'file', true, Constants::PERMISSION_ALL, false, 'test', 'SRGDNVW'], |
| 58 | + [Constants::PERMISSION_ALL, 'file', true, Constants::PERMISSION_ALL, true, 'test', 'SRMGDNVW'], |
| 59 | + [Constants::PERMISSION_ALL, 'file', true, Constants::PERMISSION_ALL, true, '' , 'SRMGDNVW'], |
| 60 | + [Constants::PERMISSION_ALL, 'file', true, Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE, true, '' , 'SRMGDNV'], |
| 61 | + [Constants::PERMISSION_ALL - Constants::PERMISSION_SHARE, 'file', true, Constants::PERMISSION_ALL, false, 'test', 'SGDNVW'], |
| 62 | + [Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RGD'], |
| 63 | + [Constants::PERMISSION_ALL - Constants::PERMISSION_DELETE, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RGNVW'], |
| 64 | + [Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RGDNVW'], |
| 65 | + [Constants::PERMISSION_ALL - Constants::PERMISSION_READ, 'file', false, Constants::PERMISSION_ALL, false, 'test', 'RDNVW'], |
| 66 | + [Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE, 'dir', false, Constants::PERMISSION_ALL, false, 'test', 'RGDNV'], |
| 67 | + [Constants::PERMISSION_ALL - Constants::PERMISSION_READ, 'dir', false, Constants::PERMISSION_ALL, false, 'test', 'RDNVCK'], |
60 | 68 | ]; |
61 | 69 | } |
62 | 70 |
|
63 | 71 | /** |
64 | 72 | * @dataProvider davPermissionsProvider |
65 | 73 | */ |
66 | | - public function testDavPermissions($permissions, $type, $shared, $mounted, $expected) { |
| 74 | + public function testDavPermissions($permissions, $type, $shared, $shareRootPermissions, $mounted, $internalPath, $expected) { |
67 | 75 | $info = $this->getMockBuilder(FileInfo::class) |
68 | 76 | ->disableOriginalConstructor() |
69 | | - ->setMethods(['getPermissions', 'isShared', 'isMounted', 'getType']) |
| 77 | + ->onlyMethods(['getPermissions', 'isShared', 'isMounted', 'getType', 'getInternalPath', 'getStorage', 'getMountPoint']) |
70 | 78 | ->getMock(); |
71 | | - $info->expects($this->any()) |
72 | | - ->method('getPermissions') |
| 79 | + $info->method('getPermissions') |
73 | 80 | ->willReturn($permissions); |
74 | | - $info->expects($this->any()) |
75 | | - ->method('isShared') |
| 81 | + $info->method('isShared') |
76 | 82 | ->willReturn($shared); |
77 | | - $info->expects($this->any()) |
78 | | - ->method('isMounted') |
| 83 | + $info->method('isMounted') |
79 | 84 | ->willReturn($mounted); |
80 | | - $info->expects($this->any()) |
81 | | - ->method('getType') |
| 85 | + $info->method('getType') |
82 | 86 | ->willReturn($type); |
| 87 | + $info->method('getInternalPath') |
| 88 | + ->willReturn($internalPath); |
| 89 | + $info->method('getMountPoint') |
| 90 | + ->willReturnCallback(function() use ($shared) { |
| 91 | + if ($shared) { |
| 92 | + return $this->createMock(SharedMount::class); |
| 93 | + } else { |
| 94 | + return $this->createMock(MountPoint::class); |
| 95 | + } |
| 96 | + }); |
| 97 | + $storage = $this->createMock(Storage\IStorage::class); |
| 98 | + if ($shared) { |
| 99 | + $storage->method('instanceOfStorage') |
| 100 | + ->willReturn(true); |
| 101 | + $cache = $this->createMock(ICache::class); |
| 102 | + $storage->method('getCache') |
| 103 | + ->willReturn($cache); |
| 104 | + $shareRootEntry = $this->createMock(ICacheEntry::class); |
| 105 | + $cache->method('get') |
| 106 | + ->willReturn($shareRootEntry); |
| 107 | + $shareRootEntry->method('getPermissions') |
| 108 | + ->willReturn($shareRootPermissions); |
| 109 | + } else { |
| 110 | + $storage->method('instanceOfStorage') |
| 111 | + ->willReturn(false); |
| 112 | + } |
| 113 | + $info->method('getStorage') |
| 114 | + ->willReturn($storage); |
83 | 115 | $view = $this->getMockBuilder(View::class) |
84 | 116 | ->disableOriginalConstructor() |
85 | 117 | ->getMock(); |
@@ -256,7 +288,7 @@ public function testSanitizeMtime($mtime, $expected) { |
256 | 288 |
|
257 | 289 | public function invalidSanitizeMtimeProvider() { |
258 | 290 | return [ |
259 | | - [-1337], [0], ['abcdef'], ['-1337'], ['0'], [12321], [24 * 60 * 60 - 1] |
| 291 | + [-1337], [0], ['abcdef'], ['-1337'], ['0'], [12321], [24 * 60 * 60 - 1], |
260 | 292 | ]; |
261 | 293 | } |
262 | 294 |
|
|
0 commit comments