diff options
Diffstat (limited to 'tests/lib/Archive/TestBase.php')
-rw-r--r-- | tests/lib/Archive/TestBase.php | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/tests/lib/Archive/TestBase.php b/tests/lib/Archive/TestBase.php new file mode 100644 index 00000000000..5bf4d9d43ea --- /dev/null +++ b/tests/lib/Archive/TestBase.php @@ -0,0 +1,144 @@ +<?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. + */ + +namespace Test\Archive; + + +abstract class TestBase extends \Test\TestCase { + /** + * @var \OC\Archive\Archive + */ + protected $instance; + + /** + * get the existing test archive + * @return \OC\Archive\Archive + */ + abstract protected function getExisting(); + /** + * get a new archive for write testing + * @return \OC\Archive\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->assertEquals(4, count($allFiles), 'only found '.count($allFiles).' out of 4 expected files'); + foreach($expected as $file) { + $this->assertContains($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->assertEquals(3, count($rootContent)); + foreach($expected as $file) { + $this->assertContains($file, $rootContent, 'cant find '. $file . ' in archive'); + } + + $dirContent=$this->instance->getFolder('dir/'); + $expected=array('lorem.txt'); + $this->assertEquals(1, count($dirContent)); + foreach($expected as $file) { + $this->assertContains($file, $dirContent, 'cant find '. $file . ' in archive'); + } + } + + public function testContent() { + $this->instance=$this->getExisting(); + $dir=\OC::$SERVERROOT.'/tests/data'; + $textFile=$dir.'/lorem.txt'; + $this->assertEquals(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); + + $tmpFile=\OCP\Files::tmpFile('.txt'); + $this->instance->extractFile('lorem.txt', $tmpFile); + $this->assertEquals(file_get_contents($textFile), file_get_contents($tmpFile)); + } + + public function testWrite() { + $dir=\OC::$SERVERROOT.'/tests/data'; + $textFile=$dir.'/lorem.txt'; + $this->instance=$this->getNew(); + $this->assertEquals(0, count($this->instance->getFiles())); + $this->instance->addFile('lorem.txt', $textFile); + $this->assertEquals(1, count($this->instance->getFiles())); + $this->assertTrue($this->instance->fileExists('lorem.txt')); + $this->assertFalse($this->instance->fileExists('lorem.txt/')); + + $this->assertEquals(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); + $this->instance->addFile('lorem.txt', 'foobar'); + $this->assertEquals('foobar', $this->instance->getFile('lorem.txt')); + } + + public function testReadStream() { + $dir=\OC::$SERVERROOT.'/tests/data'; + $this->instance=$this->getExisting(); + $fh=$this->instance->getStream('lorem.txt', 'r'); + $this->assertTrue((bool)$fh); + $content=fread($fh, $this->instance->filesize('lorem.txt')); + fclose($fh); + $this->assertEquals(file_get_contents($dir.'/lorem.txt'), $content); + } + public function testWriteStream() { + $dir=\OC::$SERVERROOT.'/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->assertEquals(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.'/tests/data'; + $this->instance=$this->getExisting(); + $tmpDir=\OCP\Files::tmpFolder(); + $this->instance->extract($tmpDir); + $this->assertEquals(true, file_exists($tmpDir.'lorem.txt')); + $this->assertEquals(true, file_exists($tmpDir.'dir/lorem.txt')); + $this->assertEquals(true, file_exists($tmpDir.'logo-wide.png')); + $this->assertEquals(file_get_contents($dir.'/lorem.txt'), file_get_contents($tmpDir.'lorem.txt')); + \OCP\Files::rmdirr($tmpDir); + } + public function testMoveRemove() { + $dir=\OC::$SERVERROOT.'/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->assertEquals(file_get_contents($textFile), $this->instance->getFile('target.txt')); + $this->instance->remove('target.txt'); + $this->assertFalse($this->instance->fileExists('target.txt')); + } + public function testRecursive() { + $dir=\OC::$SERVERROOT.'/tests/data'; + $this->instance=$this->getNew(); + $this->instance->addRecursive('/dir', $dir); + $this->assertTrue($this->instance->fileExists('/dir/lorem.txt')); + $this->assertTrue($this->instance->fileExists('/dir/data.zip')); + $this->assertTrue($this->instance->fileExists('/dir/data.tar.gz')); + } +} |