summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-05-02 23:48:23 +0200
committerRobin Appelman <icewind@owncloud.com>2012-05-02 23:48:23 +0200
commite5ef3e1340f68fdcc46ba318dab1773b8fb530a8 (patch)
treeab6c54857001552b62254f4950cc6caf45ce7720 /tests
parent0b51c5344399d9990d46b275afb82fbfbd070ad4 (diff)
downloadnextcloud-server-e5ef3e1340f68fdcc46ba318dab1773b8fb530a8.tar.gz
nextcloud-server-e5ef3e1340f68fdcc46ba318dab1773b8fb530a8.zip
move archive library to core so we can properly depend on it
Diffstat (limited to 'tests')
-rwxr-xr-xtests/lib/archive.php133
-rwxr-xr-xtests/lib/archive/tar.php24
-rwxr-xr-xtests/lib/archive/zip.php24
3 files changed, 181 insertions, 0 deletions
diff --git a/tests/lib/archive.php b/tests/lib/archive.php
new file mode 100755
index 00000000000..1779127c932
--- /dev/null
+++ b/tests/lib/archive.php
@@ -0,0 +1,133 @@
+<?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.
+ */
+
+abstract class Test_Archive extends UnitTestCase {
+ /**
+ * @var OC_Archive
+ */
+ protected $instance;
+
+ /**
+ * get the existing test archive
+ * @return OC_Archive
+ */
+ abstract protected function getExisting();
+ /**
+ * get a new archive for write testing
+ * @return OC_Archive
+ */
+ abstract protected function getNew();
+
+ public function testGetFiles(){
+ $this->instance=$this->getExisting();
+ $allFiles=$this->instance->getFiles();
+ $expected=array('lorem.txt','logo-wide.png','dir/','dir/lorem.txt');
+ $this->assertEqual(4,count($allFiles),'only found '.count($allFiles).' out of 4 expected files');
+ foreach($expected as $file){
+ $this->assertNotIdentical(false,array_search($file,$allFiles),'cant find '.$file.' in archive');
+ $this->assertTrue($this->instance->fileExists($file),'file '.$file.' does not exist in archive');
+ }
+ $this->assertFalse($this->instance->fileExists('non/existing/file'));
+
+ $rootContent=$this->instance->getFolder('');
+ $expected=array('lorem.txt','logo-wide.png','dir/');
+ $this->assertEqual(3,count($rootContent));
+ foreach($expected as $file){
+ $this->assertNotIdentical(false,array_search($file,$rootContent),'cant find '.$file.' in archive');
+ }
+
+ $dirContent=$this->instance->getFolder('dir/');
+ $expected=array('lorem.txt');
+ $this->assertEqual(1,count($dirContent));
+ foreach($expected as $file){
+ $this->assertNotIdentical(false,array_search($file,$dirContent),'cant find '.$file.' in archive');
+ }
+ }
+
+ public function testContent(){
+ $this->instance=$this->getExisting();
+ $dir=OC::$SERVERROOT.'/apps/files_archive/tests/data';
+ $textFile=$dir.'/lorem.txt';
+ $this->assertEqual(file_get_contents($textFile),$this->instance->getFile('lorem.txt'));
+
+ $tmpFile=OCP\Files::tmpFile('.txt');
+ $this->instance->extractFile('lorem.txt',$tmpFile);
+ $this->assertEqual(file_get_contents($textFile),file_get_contents($tmpFile));
+ }
+
+ public function testWrite(){
+ $dir=OC::$SERVERROOT.'/apps/files_archive/tests/data';
+ $textFile=$dir.'/lorem.txt';
+ $this->instance=$this->getNew();
+ $this->assertEqual(0,count($this->instance->getFiles()));
+ $this->instance->addFile('lorem.txt',$textFile);
+ $this->assertEqual(1,count($this->instance->getFiles()));
+ $this->assertTrue($this->instance->fileExists('lorem.txt'));
+ $this->assertFalse($this->instance->fileExists('lorem.txt/'));
+
+ $this->assertEqual(file_get_contents($textFile),$this->instance->getFile('lorem.txt'));
+ $this->instance->addFile('lorem.txt','foobar');
+ $this->assertEqual('foobar',$this->instance->getFile('lorem.txt'));
+ }
+
+ public function testReadStream(){
+ $dir=OC::$SERVERROOT.'/apps/files_archive/tests/data';
+ $this->instance=$this->getExisting();
+ $fh=$this->instance->getStream('lorem.txt','r');
+ $this->assertTrue($fh);
+ $content=fread($fh,$this->instance->filesize('lorem.txt'));
+ fclose($fh);
+ $this->assertEqual(file_get_contents($dir.'/lorem.txt'),$content);
+ }
+ public function testWriteStream(){
+ $dir=OC::$SERVERROOT.'/apps/files_archive/tests/data';
+ $this->instance=$this->getNew();
+ $fh=$this->instance->getStream('lorem.txt','w');
+ $source=fopen($dir.'/lorem.txt','r');
+ OCP\Files::streamCopy($source,$fh);
+ fclose($source);
+ fclose($fh);
+ $this->assertTrue($this->instance->fileExists('lorem.txt'));
+ $this->assertEqual(file_get_contents($dir.'/lorem.txt'),$this->instance->getFile('lorem.txt'));
+ }
+ public function testFolder(){
+ $this->instance=$this->getNew();
+ $this->assertFalse($this->instance->fileExists('/test'));
+ $this->assertFalse($this->instance->fileExists('/test/'));
+ $this->instance->addFolder('/test');
+ $this->assertTrue($this->instance->fileExists('/test'));
+ $this->assertTrue($this->instance->fileExists('/test/'));
+ $this->instance->remove('/test');
+ $this->assertFalse($this->instance->fileExists('/test'));
+ $this->assertFalse($this->instance->fileExists('/test/'));
+ }
+ public function testExtract(){
+ $dir=OC::$SERVERROOT.'/apps/files_archive/tests/data';
+ $this->instance=$this->getExisting();
+ $tmpDir=OCP\Files::tmpFolder();
+ $this->instance->extract($tmpDir);
+ $this->assertEqual(true,file_exists($tmpDir.'lorem.txt'));
+ $this->assertEqual(true,file_exists($tmpDir.'dir/lorem.txt'));
+ $this->assertEqual(true,file_exists($tmpDir.'logo-wide.png'));
+ $this->assertEqual(file_get_contents($dir.'/lorem.txt'),file_get_contents($tmpDir.'lorem.txt'));
+ OCP\Files::rmdirr($tmpDir);
+ }
+ public function testMoveRemove(){
+ $dir=OC::$SERVERROOT.'/apps/files_archive/tests/data';
+ $textFile=$dir.'/lorem.txt';
+ $this->instance=$this->getNew();
+ $this->instance->addFile('lorem.txt',$textFile);
+ $this->assertFalse($this->instance->fileExists('target.txt'));
+ $this->instance->rename('lorem.txt','target.txt');
+ $this->assertTrue($this->instance->fileExists('target.txt'));
+ $this->assertFalse($this->instance->fileExists('lorem.txt'));
+ $this->assertEqual(file_get_contents($textFile),$this->instance->getFile('target.txt'));
+ $this->instance->remove('target.txt');
+ $this->assertFalse($this->instance->fileExists('target.txt'));
+ }
+}
diff --git a/tests/lib/archive/tar.php b/tests/lib/archive/tar.php
new file mode 100755
index 00000000000..c138a51a651
--- /dev/null
+++ b/tests/lib/archive/tar.php
@@ -0,0 +1,24 @@
+<?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.
+ */
+
+require_once('archive.php');
+
+if(is_dir(OC::$SERVERROOT.'/apps/files_archive/tests/data')){
+ class Test_Archive_TAR extends Test_Archive{
+ protected function getExisting(){
+ $dir=OC::$SERVERROOT.'/apps/files_archive/tests/data';
+ return new OC_Archive_TAR($dir.'/data.tar.gz');
+ }
+
+ protected function getNew(){
+ return new OC_Archive_TAR(OCP\Files::tmpFile('.tar.gz'));
+ }
+ }
+}else{
+ abstract class Test_Archive_TAR extends Test_Archive{}
+}
diff --git a/tests/lib/archive/zip.php b/tests/lib/archive/zip.php
new file mode 100755
index 00000000000..615c9e3c7e2
--- /dev/null
+++ b/tests/lib/archive/zip.php
@@ -0,0 +1,24 @@
+<?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.
+ */
+
+require_once('archive.php');
+
+if(is_dir(OC::$SERVERROOT.'/apps/files_archive/tests/data')){
+ class Test_Archive_ZIP extends Test_Archive{
+ protected function getExisting(){
+ $dir=OC::$SERVERROOT.'/apps/files_archive/tests/data';
+ return new OC_Archive_ZIP($dir.'/data.zip');
+ }
+
+ protected function getNew(){
+ return new OC_Archive_ZIP(OCP\Files::tmpFile('.zip'));
+ }
+ }
+}else{
+ abstract class Test_Archive_ZIP extends Test_Archive{}
+}