2012-03-02 23:57:03 +00:00
|
|
|
<?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();
|
2012-10-05 20:24:36 +00:00
|
|
|
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testGetFiles() {
|
2012-03-02 23:57:03 +00:00
|
|
|
$this->instance=$this->getExisting();
|
|
|
|
$allFiles=$this->instance->getFiles();
|
2012-11-04 10:10:46 +00:00
|
|
|
$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');
|
2012-09-07 13:22:01 +00:00
|
|
|
foreach($expected as $file) {
|
2012-10-05 20:24:36 +00:00
|
|
|
$this->assertContains($file, $allFiles, 'cant find '. $file . ' in archive');
|
2012-11-04 10:10:46 +00:00
|
|
|
$this->assertTrue($this->instance->fileExists($file), 'file '.$file.' does not exist in archive');
|
2012-03-02 23:57:03 +00:00
|
|
|
}
|
|
|
|
$this->assertFalse($this->instance->fileExists('non/existing/file'));
|
2012-10-05 20:24:36 +00:00
|
|
|
|
2012-03-02 23:57:03 +00:00
|
|
|
$rootContent=$this->instance->getFolder('');
|
2012-11-04 10:10:46 +00:00
|
|
|
$expected=array('lorem.txt','logo-wide.png', 'dir/');
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual(3, count($rootContent));
|
2012-09-07 13:22:01 +00:00
|
|
|
foreach($expected as $file) {
|
2012-10-05 20:24:36 +00:00
|
|
|
$this->assertContains($file, $rootContent, 'cant find '. $file . ' in archive');
|
2012-03-02 23:57:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
$dirContent=$this->instance->getFolder('dir/');
|
|
|
|
$expected=array('lorem.txt');
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual(1, count($dirContent));
|
2012-09-07 13:22:01 +00:00
|
|
|
foreach($expected as $file) {
|
2012-10-05 20:24:36 +00:00
|
|
|
$this->assertContains($file, $dirContent, 'cant find '. $file . ' in archive');
|
2012-03-02 23:57:03 +00:00
|
|
|
}
|
|
|
|
}
|
2012-10-05 20:24:36 +00:00
|
|
|
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testContent() {
|
2012-03-02 23:57:03 +00:00
|
|
|
$this->instance=$this->getExisting();
|
2012-10-05 20:24:36 +00:00
|
|
|
$dir=OC::$SERVERROOT.'/tests/data';
|
2012-03-02 23:57:03 +00:00
|
|
|
$textFile=$dir.'/lorem.txt';
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual(file_get_contents($textFile), $this->instance->getFile('lorem.txt'));
|
2012-10-05 20:24:36 +00:00
|
|
|
|
2012-05-02 10:54:31 +00:00
|
|
|
$tmpFile=OCP\Files::tmpFile('.txt');
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->instance->extractFile('lorem.txt', $tmpFile);
|
|
|
|
$this->assertEqual(file_get_contents($textFile), file_get_contents($tmpFile));
|
2012-03-02 23:57:03 +00:00
|
|
|
}
|
|
|
|
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testWrite() {
|
2012-10-05 20:24:36 +00:00
|
|
|
$dir=OC::$SERVERROOT.'/tests/data';
|
2012-03-02 23:57:03 +00:00
|
|
|
$textFile=$dir.'/lorem.txt';
|
|
|
|
$this->instance=$this->getNew();
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual(0, count($this->instance->getFiles()));
|
|
|
|
$this->instance->addFile('lorem.txt', $textFile);
|
|
|
|
$this->assertEqual(1, count($this->instance->getFiles()));
|
2012-03-02 23:57:03 +00:00
|
|
|
$this->assertTrue($this->instance->fileExists('lorem.txt'));
|
2012-03-28 21:46:44 +00:00
|
|
|
$this->assertFalse($this->instance->fileExists('lorem.txt/'));
|
2012-10-05 20:24:36 +00:00
|
|
|
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual(file_get_contents($textFile), $this->instance->getFile('lorem.txt'));
|
2012-11-04 10:10:46 +00:00
|
|
|
$this->instance->addFile('lorem.txt', 'foobar');
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual('foobar', $this->instance->getFile('lorem.txt'));
|
2012-03-02 23:57:03 +00:00
|
|
|
}
|
|
|
|
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testReadStream() {
|
2012-10-05 20:24:36 +00:00
|
|
|
$dir=OC::$SERVERROOT.'/tests/data';
|
2012-03-02 23:57:03 +00:00
|
|
|
$this->instance=$this->getExisting();
|
2012-11-04 10:10:46 +00:00
|
|
|
$fh=$this->instance->getStream('lorem.txt', 'r');
|
2012-03-02 23:57:03 +00:00
|
|
|
$this->assertTrue($fh);
|
2012-11-02 18:53:02 +00:00
|
|
|
$content=fread($fh, $this->instance->filesize('lorem.txt'));
|
2012-03-02 23:57:03 +00:00
|
|
|
fclose($fh);
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual(file_get_contents($dir.'/lorem.txt'), $content);
|
2012-03-02 23:57:03 +00:00
|
|
|
}
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testWriteStream() {
|
2012-10-05 20:24:36 +00:00
|
|
|
$dir=OC::$SERVERROOT.'/tests/data';
|
2012-03-02 23:57:03 +00:00
|
|
|
$this->instance=$this->getNew();
|
2012-11-04 10:10:46 +00:00
|
|
|
$fh=$this->instance->getStream('lorem.txt', 'w');
|
|
|
|
$source=fopen($dir.'/lorem.txt', 'r');
|
2012-11-02 18:53:02 +00:00
|
|
|
OCP\Files::streamCopy($source, $fh);
|
2012-03-02 23:57:03 +00:00
|
|
|
fclose($source);
|
|
|
|
fclose($fh);
|
|
|
|
$this->assertTrue($this->instance->fileExists('lorem.txt'));
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual(file_get_contents($dir.'/lorem.txt'), $this->instance->getFile('lorem.txt'));
|
2012-03-02 23:57:03 +00:00
|
|
|
}
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testFolder() {
|
2012-03-28 21:46:44 +00:00
|
|
|
$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/'));
|
|
|
|
}
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testExtract() {
|
2012-10-05 20:24:36 +00:00
|
|
|
$dir=OC::$SERVERROOT.'/tests/data';
|
2012-03-28 20:31:45 +00:00
|
|
|
$this->instance=$this->getExisting();
|
2012-05-02 10:54:31 +00:00
|
|
|
$tmpDir=OCP\Files::tmpFolder();
|
2012-03-28 20:31:45 +00:00
|
|
|
$this->instance->extract($tmpDir);
|
2012-11-02 18:53:02 +00:00
|
|
|
$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'));
|
2012-05-02 10:54:31 +00:00
|
|
|
OCP\Files::rmdirr($tmpDir);
|
2012-03-28 20:31:45 +00:00
|
|
|
}
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testMoveRemove() {
|
2012-10-05 20:24:36 +00:00
|
|
|
$dir=OC::$SERVERROOT.'/tests/data';
|
2012-03-28 21:46:44 +00:00
|
|
|
$textFile=$dir.'/lorem.txt';
|
|
|
|
$this->instance=$this->getNew();
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->instance->addFile('lorem.txt', $textFile);
|
2012-03-28 21:46:44 +00:00
|
|
|
$this->assertFalse($this->instance->fileExists('target.txt'));
|
2012-11-04 10:10:46 +00:00
|
|
|
$this->instance->rename('lorem.txt', 'target.txt');
|
2012-03-28 21:46:44 +00:00
|
|
|
$this->assertTrue($this->instance->fileExists('target.txt'));
|
|
|
|
$this->assertFalse($this->instance->fileExists('lorem.txt'));
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->assertEqual(file_get_contents($textFile), $this->instance->getFile('target.txt'));
|
2012-03-28 21:46:44 +00:00
|
|
|
$this->instance->remove('target.txt');
|
|
|
|
$this->assertFalse($this->instance->fileExists('target.txt'));
|
|
|
|
}
|
2012-09-07 13:22:01 +00:00
|
|
|
public function testRecursive() {
|
2012-10-05 20:24:36 +00:00
|
|
|
$dir=OC::$SERVERROOT.'/tests/data';
|
2012-08-17 23:17:28 +00:00
|
|
|
$this->instance=$this->getNew();
|
2012-11-02 18:53:02 +00:00
|
|
|
$this->instance->addRecursive('/dir', $dir);
|
2012-08-17 23:17:28 +00:00
|
|
|
$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'));
|
|
|
|
}
|
2012-03-02 23:57:03 +00:00
|
|
|
}
|