diff --git a/tests/lib/filesystem.php b/tests/lib/filesystem.php index a1ded471a6..73b0069519 100644 --- a/tests/lib/filesystem.php +++ b/tests/lib/filesystem.php @@ -4,6 +4,11 @@ class OC_FILEYSYSTEM_Test extends OC_TestCase public function setup(){ OC_UTIL::setupFS('testuser','testcase'); } + public function tearDown(){ + OC_FILESYSTEM::chroot(''); + OC_FILESYSTEM::delTree('/testuser'); + OC_UTIL::tearDownFS(); + } public function isDir(){ $this->assertEquals(true, OC_FILESYSTEM::is_dir('/'),'Root is not a directory'); @@ -20,11 +25,198 @@ class OC_FILEYSYSTEM_Test extends OC_TestCase $this->assertEquals(true, OC_FILESYSTEM::file_exists('/dummy'),'No such file or directory after creating folder'); $this->assertEquals(true, OC_FILESYSTEM::is_dir('/dummy'),'File created instead of filder'); } - - public function tearDown(){ - OC_FILESYSTEM::chroot(''); - OC_FILESYSTEM::delTree('/testuser'); - OC_UTIL::tearDownFS(); + + public function rmdir(){ + OC_FILESYSTEM::mkdir('/dummy'); + OC_FILESYSTEM::rmdir('/dummy'); + $this->assertEquals(false, OC_FILESYSTEM::file_exists('/dummy'),'Folder still exists after removing'); + } + + public function isFile(){ + $this->assertEquals(false, OC_FILESYSTEM::is_file('/'),'Root is a file'); + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $this->assertEquals(true, OC_FILESYSTEM::is_file('/dummy'),'Created file is not said to be a file'); + } + + public function opendir(){ + OC_FILESYSTEM::file_put_contents('/dummy1','foo'); + OC_FILESYSTEM::file_put_contents('/dummy2','foo'); + $dh=OC_FILESYSTEM::opendir('/'); + if(!$dh){ + $this->fail('Failed to open root'); + } + $dummy1Found=false; + $dummy2Found=false; + while($file=readdir($dh)){ + if($file=='dummy1'){ + $dummy1Found=true; + }elseif($file=='dummy2'){ + $dummy2Found=true; + }elseif($file!='.' and $file!='..'){ + $this->fail('Unexpected filename when reading opened dir'); + } + } + $this->assertEquals(true,$dummy1Found,'Not all files found when reading opened dir'); + $this->assertEquals(true,$dummy2Found,'Not all files found when reading opened dir'); + } + + public function filesize(){ + OC_FILESYSTEM::file_put_contents('/dummy','1234567890'); + $this->assertEquals(10, OC_FILESYSTEM::filesize('/dummy'),'Unexpected filesize'); + } + + public function stat(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $time=time(); + $stat=OC_FILESYSTEM::stat('/dummy'); + $this->assertEquals(true,abs($time-$stat['atime'])<1,'Unexpected access time');//there can be small difference between those values due to running time + $this->assertEquals(true,abs($time-$stat['ctime'])<1,'Unexpected creation time'); + $this->assertEquals(true,abs($time-$stat['mtime'])<1,'Unexpected modified time'); + $this->assertEquals(3,$stat['size'],'Unexpected filesize'); + } + + public function filetype(){ + OC_FILESYSTEM::file_put_contents('/dummyFile','foo'); + OC_FILESYSTEM::mkdir('/dummyFolder'); + $this->assertEquals('file', OC_FILESYSTEM::filetype('/dummyFile'),'Unexpected filetype of file'); + $this->assertEquals('dir', OC_FILESYSTEM::filetype('/dummyFolder'),'Unexpected filetype of folder'); + } + + public function readfile(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + ob_clean(); + ob_start(); + OC_FILESYSTEM::readfile('/dummy'); + $this->assertEquals('foo', ob_get_contents(),'Unexpected output of readfile'); + ob_end_clean(); + } + + public function isReadable(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $this->assertEquals(true, OC_FILESYSTEM::is_readable('/dummy'),'Can\'t read created file'); + } + + public function isWritable(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $this->assertEquals(true, OC_FILESYSTEM::is_writeable('/dummy'),'Can\'t write created file'); + } + + public function fileatime(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $time=time(); + $this->assertEquals(true,abs($time-OC_FILESYSTEM::fileatime('/dummy'))<1,'Unexpected access time');//there can be small difference between those values due to running time + } + + public function filectime(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $time=time(); + $this->assertEquals(true,abs($time-OC_FILESYSTEM::filectime('/dummy'))<1,'Unexpected creation time');//there can be small difference between those values due to running time + } + + public function filemtime(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $time=time(); + $this->assertEquals(true,abs($time-OC_FILESYSTEM::filemtime('/dummy'))<1,'Unexpected modified time');//there can be small difference between those values due to running time + } + + public function fileGetContents(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $this->assertEquals('foo', OC_FILESYSTEM::file_get_contents('/dummy'),'Unexpected content of file'); + } + + public function unlink(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + OC_FILESYSTEM::unlink('/dummy'); + $this->assertEquals(false, OC_FILESYSTEM::file_exists('/dummy'),'File still exists after deletion'); + } + + public function rename(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + OC_FILESYSTEM::rename('/dummy','/bar'); + $this->assertEquals(true, OC_FILESYSTEM::file_exists('/bar'),'New file doesnt exists after moving'); + $this->assertEquals(false, OC_FILESYSTEM::file_exists('/dummy'),'Old file still exists after moving'); + $this->assertEquals('foo', OC_FILESYSTEM::file_get_contents('/bar'),'Unexpected content of file after moving'); + } + + public function copy(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + OC_FILESYSTEM::copy('/dummy','/bar'); + $this->assertEquals(true, OC_FILESYSTEM::file_exists('/bar'),'New file doesnt exists after copying'); + $this->assertEquals(true, OC_FILESYSTEM::file_exists('/dummy'),'Old file doesnt exists after copying'); + $this->assertEquals('foo', OC_FILESYSTEM::file_get_contents('/bar'),'Unexpected content of file after copying'); + } + + public function fopen(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $fh=OC_FILESYSTEM::fopen('/dummy','r'); + if(!$fh){ + $this->fail('Cant open file for reading'); + } + $content=fread($fh,3); + $this->assertEquals('foo', $content,'Unexpected content of file'); + fclose($fh); + $fh=OC_FILESYSTEM::fopen('/dummy','a'); + fwrite($fh,'bar',3); + fclose($fh); + $this->assertEquals('foobar', OC_FILESYSTEM::file_get_contents('/dummy'),'Unexpected content of file after appending'); + $fh=OC_FILESYSTEM::fopen('/dummy','w'); + fwrite($fh,'bar',3); + fclose($fh); + $this->assertEquals('bar', OC_FILESYSTEM::file_get_contents('/dummy'),'Unexpected content of file after writing'); + } + + public function toTmpFile(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $tmp=OC_FILESYSTEM::toTmpFile('/dummy'); + $this->assertEquals('foo', file_get_contents($tmp),'Unexpected content of temporary file'); + unlink($tmp); + } + + public function fromTmpFile(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $tmp=OC_FILESYSTEM::toTmpFile('/dummy'); + OC_FILESYSTEM::fromTmpFile($tmp,'/bar'); + $this->assertEquals('foo', OC_FILESYSTEM::file_get_contents('/bar'),'Unexpected content of new file'); + $this->assertEquals(false, file_exists($tmp),'Temporary file still exists'); + } + + public function getMimeType(){ + OC_FILESYSTEM::file_put_contents('/dummy','some plain text'); + $this->assertEquals('text/plain', OC_FILESYSTEM::getMimeType('/dummy'),'Unexpected mimetype of pain text file'); + OC_FILESYSTEM::file_put_contents('/dummy',"\n"); + $this->assertEquals('application/xml', OC_FILESYSTEM::getMimeType('/dummy'),'Unexpected mimetype of xml file'); + } + + public function delTree(){ + OC_FILESYSTEM::mkdir('/dummy'); + OC_FILESYSTEM::file_put_contents('/dummy/bar','foo'); + OC_FILESYSTEM::delTree('/dummy'); + $this->assertEquals(false, OC_FILESYSTEM::file_exists('/dummy/bar'),'File in deleted folder still exists'); + $this->assertEquals(false, OC_FILESYSTEM::file_exists('/dummy'),'Deleted folder still exists'); + } + + public function getTree(){ + OC_FILESYSTEM::mkdir('/dummy'); + OC_FILESYSTEM::file_put_contents('/dummy/bar','foo'); + $expected=array('/dummy','/dummy/bar'); + $this->assertEquals($expected, OC_FILESYSTEM::getTree('/dummy'),'Unexpected filelist returned'); + } + + public function hash(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $this->assertEquals(md5('foo'), OC_FILESYSTEM::hash('md5','/dummy'),'Unexpected md5 hash of file'); + } + + public function freeSpace(){ + $oldSpace=OC_FILESYSTEM::free_space('/'); + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $newSpace=OC_FILESYSTEM::free_space('/'); + $this->assertEquals(true, $newSpace<$oldSpace,'free space not smaller after creating a non empty file'); + } + + public function search(){ + OC_FILESYSTEM::file_put_contents('/dummy','foo'); + $this->assertEquals(array('/dummy'),OC_FILESYSTEM::search('my'),'unexpected file list after search'); } } return 'OC_FILEYSYSTEM_Test';