12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- declare(strict_types=1);
- /**
- * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
- namespace OCA\encryption\tests;
- use OC\Files\Storage\Temporary;
- use OC\Files\Storage\Wrapper\Encryption;
- use OC\Files\View;
- use OCP\Files\Mount\IMountManager;
- use OCP\Files\Storage\IDisableEncryptionStorage;
- use Test\TestCase;
- use Test\Traits\EncryptionTrait;
- use Test\Traits\MountProviderTrait;
- use Test\Traits\UserTrait;
- class TemporaryNoEncrypted extends Temporary implements IDisableEncryptionStorage {
- }
- /**
- * @group DB
- */
- class EncryptedStorageTest extends TestCase {
- use MountProviderTrait;
- use EncryptionTrait;
- use UserTrait;
- public function testMoveFromEncrypted() {
- $this->createUser("test1", "test2");
- $this->setupForUser("test1", 'test2');
- $unwrapped = new Temporary();
- $this->registerMount("test1", new TemporaryNoEncrypted(), "/test1/files/unenc");
- $this->registerMount("test1", $unwrapped, "/test1/files/enc");
- $this->loginWithEncryption("test1");
- $view = new View("/test1/files");
- /** @var IMountManager $mountManager */
- $mountManager = \OC::$server->get(IMountManager::class);
- $encryptedMount = $mountManager->find("/test1/files/enc");
- $unencryptedMount = $mountManager->find("/test1/files/unenc");
- $encryptedStorage = $encryptedMount->getStorage();
- $unencryptedStorage = $unencryptedMount->getStorage();
- $encryptedCache = $encryptedStorage->getCache();
- $unencryptedCache = $unencryptedStorage->getCache();
- $this->assertTrue($encryptedStorage->instanceOfStorage(Encryption::class));
- $this->assertFalse($unencryptedStorage->instanceOfStorage(Encryption::class));
- $encryptedStorage->file_put_contents("foo.txt", "bar");
- $this->assertEquals("bar", $encryptedStorage->file_get_contents("foo.txt"));
- $this->assertStringStartsWith("HBEGIN:oc_encryption_module:", $unwrapped->file_get_contents("foo.txt"));
- $this->assertTrue($encryptedCache->get("foo.txt")->isEncrypted());
- $view->rename("enc/foo.txt", "unenc/foo.txt");
- $this->assertEquals("bar", $unencryptedStorage->file_get_contents("foo.txt"));
- $this->assertFalse($unencryptedCache->get("foo.txt")->isEncrypted());
- }
- }
|