]> source.dussan.org Git - nextcloud-server.git/commitdiff
some tests for the file blacklist
authorRobin Appelman <icewind@owncloud.com>
Fri, 2 Nov 2012 23:10:21 +0000 (00:10 +0100)
committerRobin Appelman <icewind@owncloud.com>
Fri, 2 Nov 2012 23:26:36 +0000 (00:26 +0100)
tests/lib/filesystem.php

index e22b3f1c0d80903f1d191061166f1d72255c7357..07c25e1498ac9048f4436306eeb8d73d40766991 100644 (file)
@@ -24,7 +24,7 @@ class Test_Filesystem extends UnitTestCase {
        /**
         * @var array tmpDirs
         */
-       private $tmpDirs=array();
+       private $tmpDirs = array();
 
        /**
         * @return array
@@ -72,21 +72,55 @@ class Test_Filesystem extends UnitTestCase {
                }
        }
 
+       public function testBlacklist() {
+               OC_Hook::clear('OC_Filesystem');
+               OC_Hook::connect('OC_Filesystem', 'write', 'OC_Filesystem', 'isBlacklisted');
+               OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted');
+
+               $run = true;
+               OC_Hook::emit(
+                       OC_Filesystem::CLASSNAME,
+                       OC_Filesystem::signal_write,
+                       array(
+                               OC_Filesystem::signal_param_path => '/test/.htaccess',
+                               OC_Filesystem::signal_param_run => &$run
+                       )
+               );
+               $this->assertFalse($run);
+
+               if (OC_Filesystem::getView()) {
+                       $user = OC_User::getUser();
+               } else {
+                       $user = uniqid();
+                       OC_Filesystem::init('/' . $user . '/files');
+               }
+
+               OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/');
+
+               $rootView = new OC_FilesystemView('');
+               $rootView->mkdir('/' . $user);
+               $rootView->mkdir('/' . $user . '/files');
+
+               $this->assertFalse(OC_Filesystem::file_put_contents('/.htaccess', 'foo'));
+               $fh = fopen(__FILE__, 'r');
+               $this->assertFalse(OC_Filesystem::file_put_contents('/.htaccess', $fh));
+       }
+
        public function testHooks() {
-               if(OC_Filesystem::getView()){
+               if (OC_Filesystem::getView()) {
                        $user = OC_User::getUser();
-               }else{
-                       $user=uniqid();
-                       OC_Filesystem::init('/'.$user.'/files');
+               } else {
+                       $user = uniqid();
+                       OC_Filesystem::init('/' . $user . '/files');
                }
                OC_Hook::clear('OC_Filesystem');
                OC_Hook::connect('OC_Filesystem', 'post_write', $this, 'dummyHook');
 
                OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/');
 
-               $rootView=new OC_FilesystemView('');
-               $rootView->mkdir('/'.$user);
-               $rootView->mkdir('/'.$user.'/files');
+               $rootView = new OC_FilesystemView('');
+               $rootView->mkdir('/' . $user);
+               $rootView->mkdir('/' . $user . '/files');
 
                OC_Filesystem::file_put_contents('/foo', 'foo');
                OC_Filesystem::mkdir('/bar');