]> source.dussan.org Git - nextcloud-server.git/commitdiff
fixing unit tests for stream wrapper
authorThomas Müller <thomas.mueller@tmit.eu>
Thu, 2 Apr 2015 09:07:07 +0000 (11:07 +0200)
committerThomas Müller <thomas.mueller@tmit.eu>
Tue, 7 Apr 2015 11:30:30 +0000 (13:30 +0200)
lib/private/files/stream/encryption.php
tests/lib/files/stream/encryption.php

index 88957825de0cc8ae48c36e55034c937ebbe78d95..fcc9984500dba9bfb92be43dec00d3daa5611a3e 100644 (file)
@@ -248,7 +248,7 @@ class Encryption extends Wrapper {
                $result = '';
 
                // skip the header if we read the file from the beginning
-               if ($this->position === 0 && !empty($this->header)) {
+               if ($this->position === 0) {
                        parent::stream_read($this->util->getBlockSize());
                }
 
index 1c5e5cf7a49ff2683a527187dfdc5a98e68f50dc..3a5a2d4899ee728b0e07332b14fed004c93fb521 100644 (file)
@@ -11,14 +11,14 @@ class Encryption extends \Test\TestCase {
         * @param string $mode
         * @param integer $limit
         */
-       protected function getStream($mode) {
+       protected function getStream($fileName, $mode) {
 
-               $source = fopen('php://temp', $mode);
-               $internalPath = '';
-               $fullPath = '';
+               $source = fopen($fileName, $mode);
+               $internalPath = $fileName;
+               $fullPath = $fileName;
                $header = [];
                $uid = '';
-               $encryptionModule = new DummyModule();
+               $encryptionModule = $this->buildMockModule();
                $storage = $this->getMockBuilder('\OC\Files\Storage\Storage')
                        ->disableOriginalConstructor()->getMock();
                $encStorage = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption')
@@ -26,19 +26,51 @@ class Encryption extends \Test\TestCase {
                $config = $this->getMockBuilder('\OCP\IConfig')
                        ->disableOriginalConstructor()
                        ->getMock();
-               $util = new \OC\Encryption\Util(new View(), new \OC\User\Manager(), $config);
+               $file = $this->getMockBuilder('\OC\Encryption\File')
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $util = $this->getMock('\OC\Encryption\Util', ['getUidAndFilename'], [new View(), new \OC\User\Manager(), $config]);
+               $util->expects($this->any())
+                       ->method('getUidAndFilename')
+                       ->willReturn(['user1', $internalPath]);
                $size = 12;
                $unencryptedSize = 8000;
 
                return \OC\Files\Stream\Encryption::wrap($source, $internalPath,
                        $fullPath, $header, $uid, $encryptionModule, $storage, $encStorage,
-                       $util, $mode, $size, $unencryptedSize);
+                       $util, $file, $mode, $size, $unencryptedSize);
        }
 
-       public function testWriteEnoughSpace() {
-               $stream = $this->getStream('w+');
+       public function testWriteRead() {
+               $fileName = tempnam("/tmp", "FOO");
+               $stream = $this->getStream($fileName, 'w+');
                $this->assertEquals(6, fwrite($stream, 'foobar'));
-               rewind($stream);
+               fclose($stream);
+
+               $stream = $this->getStream($fileName, 'r');
                $this->assertEquals('foobar', fread($stream, 100));
+               fclose($stream);
+       }
+
+       /**
+        * @return \PHPUnit_Framework_MockObject_MockObject
+        */
+       protected function buildMockModule() {
+               $encryptionModule = $this->getMockBuilder('\OCP\Encryption\IEncryptionModule')
+                       ->disableOriginalConstructor()
+                       ->setMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'calculateUnencryptedSize', 'getUnencryptedBlockSize'])
+                       ->getMock();
+
+               $encryptionModule->expects($this->any())->method('getId')->willReturn('UNIT_TEST_MODULE');
+               $encryptionModule->expects($this->any())->method('getDisplayName')->willReturn('Unit test module');
+               $encryptionModule->expects($this->any())->method('begin')->willReturn([]);
+               $encryptionModule->expects($this->any())->method('end')->willReturn('');
+               $encryptionModule->expects($this->any())->method('encrypt')->willReturnArgument(0);
+               $encryptionModule->expects($this->any())->method('decrypt')->willReturnArgument(0);
+               $encryptionModule->expects($this->any())->method('update')->willReturn(true);
+               $encryptionModule->expects($this->any())->method('shouldEncrypt')->willReturn(true);
+               $encryptionModule->expects($this->any())->method('calculateUnencryptedSize')->willReturn(42);
+               $encryptionModule->expects($this->any())->method('getUnencryptedBlockSize')->willReturn(6126);
+               return $encryptionModule;
        }
 }