aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_encryption/tests
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_encryption/tests')
-rwxr-xr-xapps/files_encryption/tests/encryption.php42
-rwxr-xr-xapps/files_encryption/tests/stream.php56
2 files changed, 98 insertions, 0 deletions
diff --git a/apps/files_encryption/tests/encryption.php b/apps/files_encryption/tests/encryption.php
new file mode 100755
index 00000000000..00466cc671c
--- /dev/null
+++ b/apps/files_encryption/tests/encryption.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+class Test_Encryption extends UnitTestCase {
+ function testEncryption(){
+ $key=uniqid();
+ $file=OC::$SERVERROOT.'/3rdparty/MDB2.php';
+ $source=file_get_contents($file); //nice large text file
+ $encrypted=OC_Crypt::encrypt($source,$key);
+ $decrypted=OC_Crypt::decrypt($encrypted,$key);
+ $this->assertNotEqual($encrypted,$source);
+ $this->assertEqual($decrypted,$source);
+
+ $chunk=substr($source,0,8192);
+ $encrypted=OC_Crypt::encrypt($chunk,$key);
+ $this->assertEqual(strlen($chunk),strlen($encrypted));
+ $decrypted=OC_Crypt::decrypt($encrypted,$key);
+ $this->assertEqual($decrypted,$chunk);
+
+ $encrypted=OC_Crypt::blockEncrypt($source,$key);
+ $decrypted=OC_Crypt::blockDecrypt($encrypted,$key);
+ $this->assertNotEqual($encrypted,$source);
+ $this->assertEqual($decrypted,$source);
+
+ $tmpFileEncrypted=OCP\Files::tmpFile();
+ OC_Crypt::encryptfile($file,$tmpFileEncrypted,$key);
+ $encrypted=file_get_contents($tmpFileEncrypted);
+ $decrypted=OC_Crypt::blockDecrypt($encrypted,$key);
+ $this->assertNotEqual($encrypted,$source);
+ $this->assertEqual($decrypted,$source);
+
+ $tmpFileDecrypted=OCP\Files::tmpFile();
+ OC_Crypt::decryptfile($tmpFileEncrypted,$tmpFileDecrypted,$key);
+ $decrypted=file_get_contents($tmpFileDecrypted);
+ $this->assertEqual($decrypted,$source);
+ }
+}
diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php
new file mode 100755
index 00000000000..b23805d60b0
--- /dev/null
+++ b/apps/files_encryption/tests/stream.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+class Test_CryptStream extends UnitTestCase {
+ private $tmpFiles=array();
+
+ function testStream(){
+ $stream=$this->getStream('test1','w');
+ fwrite($stream,'foobar');
+ fclose($stream);
+
+ $stream=$this->getStream('test1','r');
+ $data=fread($stream,6);
+ fclose($stream);
+ $this->assertEqual('foobar',$data);
+
+ $file=OC::$SERVERROOT.'/3rdparty/MDB2.php';
+ $source=fopen($file,'r');
+ $target=$this->getStream('test2','w');
+ OCP\Files::streamCopy($source,$target);
+ fclose($target);
+ fclose($source);
+
+ $stream=$this->getStream('test2','r');
+ $data=stream_get_contents($stream);
+ $original=file_get_contents($file);
+ $this->assertEqual(strlen($original),strlen($data));
+ $this->assertEqual($original,$data);
+ }
+
+ /**
+ * get a cryptstream to a temporary file
+ * @param string $id
+ * @param string $mode
+ * @return resource
+ */
+ function getStream($id,$mode){
+ if($id===''){
+ $id=uniqid();
+ }
+ if(!isset($this->tmpFiles[$id])){
+ $file=OCP\Files::tmpFile();
+ $this->tmpFiles[$id]=$file;
+ }else{
+ $file=$this->tmpFiles[$id];
+ }
+ $stream=fopen($file,$mode);
+ OC_CryptStream::$sourceStreams[$id]=array('path'=>'dummy','stream'=>$stream);
+ return fopen('crypt://streams/'.$id,$mode);
+ }
+}