Exemple #1
0
 /**
  * @param bool $scan
  * @return \OC\Files\Storage\Storage
  */
 private function getTestStorage($scan = true)
 {
     $this->fileSystem = new Temporary(array());
     $this->fileLocker = new LockingWrapper(array('storage' => $this->fileSystem));
     $textData = "dummy file data\n";
     $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo.png');
     $this->fileSystem->mkdir('folder');
     $this->fileSystem->file_put_contents('foo.txt', $textData);
     $this->fileSystem->file_put_contents('foo.png', $imgData);
     $this->fileSystem->file_put_contents('folder/bar.txt', $textData);
     if ($scan) {
         $scanner = $this->fileSystem->getScanner();
         $scanner->scan('');
     }
     return $this->fileSystem;
 }
Exemple #2
0
 public function testWatcherEtagCrossStorage()
 {
     $storage1 = new Temporary(array());
     $storage2 = new Temporary(array());
     $scanner1 = $storage1->getScanner();
     $scanner2 = $storage2->getScanner();
     $storage1->mkdir('sub');
     \OC\Files\Filesystem::mount($storage1, array(), '/test/');
     \OC\Files\Filesystem::mount($storage2, array(), '/test/sub/storage');
     $past = time() - 100;
     $storage2->file_put_contents('test.txt', 'foobar');
     $scanner1->scan('');
     $scanner2->scan('');
     $view = new \OC\Files\View('');
     $storage2->getWatcher('')->setPolicy(Watcher::CHECK_ALWAYS);
     $oldFileInfo = $view->getFileInfo('/test/sub/storage/test.txt');
     $oldFolderInfo = $view->getFileInfo('/test');
     $storage2->getCache()->update($oldFileInfo->getId(), array('storage_mtime' => $past));
     $view->getFileInfo('/test/sub/storage/test.txt');
     $newFolderInfo = $view->getFileInfo('/test');
     $this->assertNotEquals($newFolderInfo->getEtag(), $oldFolderInfo->getEtag());
 }
Exemple #3
0
 public function testDeleteGhostFolder()
 {
     $storage = new Temporary(array());
     $scanner = $storage->getScanner();
     $cache = $storage->getCache();
     $storage->mkdir('foo');
     $storage->file_put_contents('foo/foo.txt', 'bar');
     \OC\Files\Filesystem::mount($storage, array(), '/test/');
     $scanner->scan('');
     $storage->rmdir('foo');
     $this->assertTrue($cache->inCache('foo'));
     $this->assertTrue($cache->inCache('foo/foo.txt'));
     $view = new \OC\Files\View('/test');
     $rootInfo = $view->getFileInfo('');
     $this->assertEquals(3, $rootInfo->getSize());
     $view->rmdir('foo');
     $newInfo = $view->getFileInfo('');
     $this->assertFalse($cache->inCache('foo'));
     $this->assertFalse($cache->inCache('foo/foo.txt'));
     $this->assertNotEquals($rootInfo->getEtag(), $newInfo->getEtag());
     $this->assertEquals(0, $newInfo->getSize());
 }
Exemple #4
0
 public function testWriteWithMountPoints()
 {
     $storage2 = new \OC\Files\Storage\Temporary(array());
     $storage2->getScanner()->scan('');
     //initialize etags
     $cache2 = $storage2->getCache();
     Filesystem::mount($storage2, array(), '/' . self::$user . '/files/folder/substorage');
     $view = new View('/' . self::$user . '/files');
     $folderCachedData = $view->getFileInfo('folder');
     $substorageCachedData = $cache2->get('');
     Filesystem::file_put_contents('folder/substorage/foo.txt', 'asd');
     $this->assertTrue($cache2->inCache('foo.txt'));
     $cachedData = $cache2->get('foo.txt');
     $this->assertEquals(3, $cachedData['size']);
     $mtime = $cachedData['mtime'];
     $cachedData = $cache2->get('');
     $this->assertInternalType('string', $substorageCachedData['etag']);
     $this->assertInternalType('string', $cachedData['etag']);
     $this->assertNotSame($substorageCachedData['etag'], $cachedData['etag']);
     $cachedData = $view->getFileInfo('folder');
     $this->assertInternalType('string', $folderCachedData['etag']);
     $this->assertInternalType('string', $cachedData['etag']);
     $this->assertNotSame($folderCachedData['etag'], $cachedData['etag']);
 }
Exemple #5
0
 public function testRenameOverWrite()
 {
     $storage = new Temporary(array());
     $scanner = $storage->getScanner();
     $storage->mkdir('sub');
     $storage->mkdir('foo');
     $storage->file_put_contents('foo.txt', 'asd');
     $storage->file_put_contents('foo/bar.txt', 'asd');
     $scanner->scan('');
     \OC\Files\Filesystem::mount($storage, array(), '/test/');
     $view = new \OC\Files\View('');
     $this->assertTrue($view->rename('/test/foo.txt', '/test/foo/bar.txt'));
 }
Exemple #6
0
 public function testRenameCrossStoragePreserveMtime()
 {
     $storage1 = new Temporary(array());
     $storage2 = new Temporary(array());
     $scanner1 = $storage1->getScanner();
     $scanner2 = $storage2->getScanner();
     $storage1->mkdir('sub');
     $storage1->mkdir('foo');
     $storage1->file_put_contents('foo.txt', 'asd');
     $storage1->file_put_contents('foo/bar.txt', 'asd');
     \OC\Files\Filesystem::mount($storage1, array(), '/test/');
     \OC\Files\Filesystem::mount($storage2, array(), '/test/sub/storage');
     $view = new \OC\Files\View('');
     $time = time() - 200;
     $view->touch('/test/foo.txt', $time);
     $view->touch('/test/foo', $time);
     $view->touch('/test/foo/bar.txt', $time);
     $view->rename('/test/foo.txt', '/test/sub/storage/foo.txt');
     $this->assertEquals($time, $view->filemtime('/test/sub/storage/foo.txt'));
     $view->rename('/test/foo', '/test/sub/storage/foo');
     $this->assertEquals($time, $view->filemtime('/test/sub/storage/foo/bar.txt'));
 }
Exemple #7
0
 public function testFilePutContentsClearsChecksum()
 {
     $storage = new Temporary(array());
     $scanner = $storage->getScanner();
     $storage->file_put_contents('foo.txt', 'bar');
     \OC\Files\Filesystem::mount($storage, array(), '/test/');
     $scanner->scan('');
     $view = new \OC\Files\View('/test/foo.txt');
     $view->putFileInfo('.', ['checksum' => '42']);
     $this->assertEquals('bar', $view->file_get_contents(''));
     $fh = tmpfile();
     fwrite($fh, 'fooo');
     rewind($fh);
     $view->file_put_contents('', $fh);
     $this->assertEquals('fooo', $view->file_get_contents(''));
     $data = $view->getFileInfo('.');
     $this->assertEquals('', $data->getChecksum());
 }