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(): void {
- $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());
- }
- }
|