aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2023-11-17 08:43:22 +0100
committerFerdinand Thiessen <opensource@fthiessen.de>2023-11-17 12:54:37 +0100
commit5172baaf8b0b028328a59e7692bd395b5da2883b (patch)
tree0071d6a00ccd33d7d0c496620ae191383a57bd17 /tests
parent158aedb549b253b0b8a84a7c68c0d7bca9e7be54 (diff)
downloadnextcloud-server-5172baaf8b0b028328a59e7692bd395b5da2883b.tar.gz
nextcloud-server-5172baaf8b0b028328a59e7692bd395b5da2883b.zip
fix(ObjectStore): Make copying behavior consistent with local storage
Drop file permissions on copy like we do on local storage. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php b/tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php
index 1bebaf6c4ba..2f835747077 100644
--- a/tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php
+++ b/tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php
@@ -237,4 +237,42 @@ class ObjectStoreStorageTest extends Storage {
$this->assertEquals('2', $this->instance->file_get_contents('b/target/sub/2.txt'));
$this->assertEquals('3', $this->instance->file_get_contents('b/target/sub/3.txt'));
}
+
+ public function testCopyPreservesPermissions() {
+ $cache = $this->instance->getCache();
+
+ $this->instance->file_put_contents('test.txt', 'foo');
+ $this->assertTrue($cache->inCache('test.txt'));
+
+ $cache->update($cache->getId('test.txt'), ['permissions' => \OCP\Constants::PERMISSION_READ]);
+ $this->assertEquals(\OCP\Constants::PERMISSION_READ, $this->instance->getPermissions('test.txt'));
+
+ $this->assertTrue($this->instance->copy('test.txt', 'new.txt'));
+
+ $this->assertTrue($cache->inCache('new.txt'));
+ $this->assertEquals(\OCP\Constants::PERMISSION_READ, $this->instance->getPermissions('new.txt'));
+ }
+
+ /**
+ * Test that copying files will drop permissions like local storage does
+ * TODO: Drop this and fix local storage
+ */
+ public function testCopyGrantsPermissions() {
+ $config['objectstore'] = $this->objectStorage;
+ $config['handleCopiesAsOwned'] = true;
+ $instance = new ObjectStoreStorageOverwrite($config);
+
+ $cache = $instance->getCache();
+
+ $instance->file_put_contents('test.txt', 'foo');
+ $this->assertTrue($cache->inCache('test.txt'));
+
+ $cache->update($cache->getId('test.txt'), ['permissions' => \OCP\Constants::PERMISSION_READ]);
+ $this->assertEquals(\OCP\Constants::PERMISSION_READ, $instance->getPermissions('test.txt'));
+
+ $this->assertTrue($instance->copy('test.txt', 'new.txt'));
+
+ $this->assertTrue($cache->inCache('new.txt'));
+ $this->assertEquals(\OCP\Constants::PERMISSION_ALL, $instance->getPermissions('new.txt'));
+ }
}