aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2022-12-07 22:03:13 +0100
committerGitHub <noreply@github.com>2022-12-07 22:03:13 +0100
commit87e638b1f8c0e418b491464c4b7dccce0e8a61bf (patch)
tree1132d132540c464e6902d5a0199f7d7120bee40b /tests
parent0012787f73f30dc482d5e5eaac90fb3b514af238 (diff)
parent59ae6e9dd6a750199517382bcf7d031259004e42 (diff)
downloadnextcloud-server-87e638b1f8c0e418b491464c4b7dccce0e8a61bf.tar.gz
nextcloud-server-87e638b1f8c0e418b491464c4b7dccce0e8a61bf.zip
Merge pull request #35649 from nextcloud/bugfix/object-storage-master-key-enc
Update the unencrypted file size when closing streams
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/Files/Stream/EncryptionTest.php20
1 files changed, 11 insertions, 9 deletions
diff --git a/tests/lib/Files/Stream/EncryptionTest.php b/tests/lib/Files/Stream/EncryptionTest.php
index 5516c0bf658..79a845fe7a6 100644
--- a/tests/lib/Files/Stream/EncryptionTest.php
+++ b/tests/lib/Files/Stream/EncryptionTest.php
@@ -12,6 +12,7 @@ use OCP\IConfig;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class EncryptionTest extends \Test\TestCase {
+ public const DEFAULT_WRAPPER = '\OC\Files\Stream\Encryption';
/** @var \OCP\Encryption\IEncryptionModule | \PHPUnit\Framework\MockObject\MockObject */
private $encryptionModule;
@@ -22,7 +23,7 @@ class EncryptionTest extends \Test\TestCase {
* @param integer $unencryptedSize
* @return resource
*/
- protected function getStream($fileName, $mode, $unencryptedSize, $wrapper = '\OC\Files\Stream\Encryption') {
+ protected function getStream($fileName, $mode, $unencryptedSize, $wrapper = self::DEFAULT_WRAPPER, $unencryptedSizeOnClose = 0) {
clearstatcache();
$size = filesize($fileName);
$source = fopen($fileName, $mode);
@@ -64,9 +65,10 @@ class EncryptionTest extends \Test\TestCase {
$entry = new CacheEntry([
'fileid' => 5,
'encryptedVersion' => 2,
+ 'unencrypted_size' => $unencryptedSizeOnClose,
]);
$cache->expects($this->any())->method('get')->willReturn($entry);
- $cache->expects($this->any())->method('update')->with(5, ['encrypted' => 3, 'encryptedVersion' => 3]);
+ $cache->expects($this->any())->method('update')->with(5, ['encrypted' => 3, 'encryptedVersion' => 3, 'unencrypted_size' => $unencryptedSizeOnClose]);
return $wrapper::wrap($source, $internalPath,
@@ -188,7 +190,7 @@ class EncryptionTest extends \Test\TestCase {
public function testWriteRead() {
$fileName = tempnam("/tmp", "FOO");
- $stream = $this->getStream($fileName, 'w+', 0);
+ $stream = $this->getStream($fileName, 'w+', 0, self::DEFAULT_WRAPPER, 6);
$this->assertEquals(6, fwrite($stream, 'foobar'));
fclose($stream);
@@ -196,7 +198,7 @@ class EncryptionTest extends \Test\TestCase {
$this->assertEquals('foobar', fread($stream, 100));
fclose($stream);
- $stream = $this->getStream($fileName, 'r+', 6);
+ $stream = $this->getStream($fileName, 'r+', 6, self::DEFAULT_WRAPPER, 6);
$this->assertEquals(3, fwrite($stream, 'bar'));
fclose($stream);
@@ -209,7 +211,7 @@ class EncryptionTest extends \Test\TestCase {
public function testRewind() {
$fileName = tempnam("/tmp", "FOO");
- $stream = $this->getStream($fileName, 'w+', 0);
+ $stream = $this->getStream($fileName, 'w+', 0, self::DEFAULT_WRAPPER, 6);
$this->assertEquals(6, fwrite($stream, 'foobar'));
$this->assertEquals(true, rewind($stream));
$this->assertEquals('foobar', fread($stream, 100));
@@ -227,7 +229,7 @@ class EncryptionTest extends \Test\TestCase {
public function testSeek() {
$fileName = tempnam("/tmp", "FOO");
- $stream = $this->getStream($fileName, 'w+', 0);
+ $stream = $this->getStream($fileName, 'w+', 0, self::DEFAULT_WRAPPER, 9);
$this->assertEquals(6, fwrite($stream, 'foobar'));
$this->assertEquals(0, fseek($stream, 3));
$this->assertEquals(6, fwrite($stream, 'foobar'));
@@ -261,7 +263,7 @@ class EncryptionTest extends \Test\TestCase {
$expectedData = file_get_contents(\OC::$SERVERROOT . '/tests/data/' . $testFile);
// write it
$fileName = tempnam("/tmp", "FOO");
- $stream = $this->getStream($fileName, 'w+', 0);
+ $stream = $this->getStream($fileName, 'w+', 0, self::DEFAULT_WRAPPER, strlen($expectedData));
// while writing the file from the beginning to the end we should never try
// to read parts of the file. This should only happen for write operations
// in the middle of a file
@@ -302,7 +304,7 @@ class EncryptionTest extends \Test\TestCase {
$expectedData = file_get_contents(\OC::$SERVERROOT . '/tests/data/' . $testFile);
// write it
$fileName = tempnam("/tmp", "FOO");
- $stream = $this->getStream($fileName, 'w+', 0, '\Test\Files\Stream\DummyEncryptionWrapper');
+ $stream = $this->getStream($fileName, 'w+', 0, '\Test\Files\Stream\DummyEncryptionWrapper', strlen($expectedData));
// while writing the file from the beginning to the end we should never try
// to read parts of the file. This should only happen for write operations
// in the middle of a file
@@ -311,7 +313,7 @@ class EncryptionTest extends \Test\TestCase {
fclose($stream);
// read it all
- $stream = $this->getStream($fileName, 'r', strlen($expectedData), '\Test\Files\Stream\DummyEncryptionWrapper');
+ $stream = $this->getStream($fileName, 'r', strlen($expectedData), '\Test\Files\Stream\DummyEncryptionWrapper', strlen($expectedData));
$data = stream_get_contents($stream);
fclose($stream);