From e179ef5547a19153ee285d9866b8bf3af91a8eca Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind1991@gmail.com>
Date: Sun, 12 Jun 2011 02:55:13 +0200
Subject: [PATCH] test cases for OC_FILESYSTEM

---
 tests/lib/filesystem.php | 202 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 197 insertions(+), 5 deletions(-)

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',"<?xml version='1.0'?>\n</dummy>");
+		$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';
-- 
GitLab