]> source.dussan.org Git - nextcloud-server.git/commitdiff
added test for failed sharing
authorFlorin Peter <github@florin-peter.de>
Mon, 20 May 2013 19:46:28 +0000 (21:46 +0200)
committerFlorin Peter <github@florin-peter.de>
Mon, 20 May 2013 19:46:28 +0000 (21:46 +0200)
apps/files_encryption/hooks/hooks.php
apps/files_encryption/tests/crypt.php
apps/files_encryption/tests/encryption.key [new file with mode: 0644]
apps/files_encryption/tests/share.php

index 90a93b4c52d9c70b15c38c89ba98373b2a568b6c..e3196480457845d15dca145819af635d3b9682cf 100644 (file)
@@ -208,6 +208,9 @@ class Hooks {
        /*\r
         * @brief check if files can be encrypted to every user.\r
         */\r
+       /**\r
+        * @param $params\r
+        */\r
        public static function preShared($params) {\r
 \r
                $users = array();\r
@@ -229,7 +232,6 @@ class Hooks {
                                $params['run']->run = false;\r
                                // TODO: Make sure files_sharing provides user\r
                                // feedback on failed share\r
-                               break;\r
                        }\r
                }\r
        }\r
index 5b5a2189a48ae09e42aeeb39e0fae8f9c5626f8a..6a1f1aef659457b3d4cf54c9f23e4f2ea862d078 100755 (executable)
@@ -51,6 +51,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase
                $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php');
                $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt');
                $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt');
+               $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key');
                $this->randomKey = Encryption\Crypt::generateKey();
 
                $keypair = Encryption\Crypt::createKeypair();
@@ -884,6 +885,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase
                // tear down
                $view->unlink($filename);
        }
+
 //     function testEncryption(){
 //     
 //             $key=uniqid();
diff --git a/apps/files_encryption/tests/encryption.key b/apps/files_encryption/tests/encryption.key
new file mode 100644 (file)
index 0000000..4495cee
--- /dev/null
@@ -0,0 +1 @@
+ÍÜä°E_cP\ 1ï\1e6HþV»sßà\e\8dÊ\ 6\9e
\ No newline at end of file
index a9ee8d00235f1abc7d925b477a548fb3bb2125e8..f302aa0a3ef4226be869d8176aef356bd5b05b7b 100755 (executable)
@@ -691,6 +691,70 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
                $this->assertTrue($util->setRecoveryForUser(0));
        }
 
+       function testFailShareFile()
+       {
+               // login as admin
+               $this->loginHelper('admin');
+
+               // save file with content
+               $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort);
+
+               // test that data was successfully written
+               $this->assertTrue(is_int($cryptedFile));
+
+               // disable encryption proxy to prevent recursive calls
+               $proxyStatus = \OC_FileProxy::$enabled;
+               \OC_FileProxy::$enabled = false;
+
+               // get the file info from previous created file
+               $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename);
+
+               // check if we have a valid file info
+               $this->assertTrue(is_array($fileInfo));
+
+               // check if the unencrypted file size is stored
+               $this->assertGreaterThan(0, $fileInfo['unencrypted_size']);
+
+               // break users public key
+               $this->view->rename('/public-keys/user2.public.key', '/public-keys/user2.public.key_backup');
+
+               // re-enable the file proxy
+               \OC_FileProxy::$enabled = $proxyStatus;
+
+               // share the file
+               \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL);
+
+               // login as admin
+               $this->loginHelper('admin');
+
+               // check if share key for user1 not exists
+               $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey'));
+
+               // disable encryption proxy to prevent recursive calls
+               $proxyStatus = \OC_FileProxy::$enabled;
+               \OC_FileProxy::$enabled = false;
+
+               // break user1 public key
+               $this->view->rename('/public-keys/user2.public.key_backup', '/public-keys/user2.public.key');
+
+               // remove share file
+               $this->view->unlink('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey');
+
+               // re-enable the file proxy
+               \OC_FileProxy::$enabled = $proxyStatus;
+
+               // unshare the file with user1
+               \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1');
+
+               // check if share key not exists
+               $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey'));
+
+               // cleanup
+               $this->view->unlink('/admin/files/' . $this->filename);
+       }
+
+
+
        /**
         * @param $user
         * @param bool $create