0b3f0716fc
Added oc:tags and oc:favorites in PROPFIND response. It is possible to update them with PROPPATCH. These properties are optional which means they need to be requested explicitly
158 lines
3.9 KiB
PHP
158 lines
3.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Copyright (c) 2013 Thomas Müller <thomas.mueller@tmit.eu>
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
* later.
|
|
* See the COPYING-README file.
|
|
*/
|
|
class Test_OC_Connector_Sabre_Directory extends \Test\TestCase {
|
|
|
|
private $view;
|
|
private $info;
|
|
|
|
protected function setUp() {
|
|
parent::setUp();
|
|
|
|
$this->view = $this->getMock('OC\Files\View', array(), array(), '', false);
|
|
$this->info = $this->getMock('OC\Files\FileInfo', array(), array(), '', false);
|
|
}
|
|
|
|
private function getRootDir() {
|
|
$this->view->expects($this->once())
|
|
->method('getRelativePath')
|
|
->will($this->returnValue(''));
|
|
|
|
$this->info->expects($this->once())
|
|
->method('getPath')
|
|
->will($this->returnValue(''));
|
|
|
|
return new OC_Connector_Sabre_Directory($this->view, $this->info);
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Sabre\DAV\Exception\Forbidden
|
|
*/
|
|
public function testCreateSharedFileFails() {
|
|
$dir = $this->getRootDir();
|
|
$dir->createFile('Shared');
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Sabre\DAV\Exception\Forbidden
|
|
*/
|
|
public function testCreateSharedFolderFails() {
|
|
$dir = $this->getRootDir();
|
|
$dir->createDirectory('Shared');
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Sabre\DAV\Exception\Forbidden
|
|
*/
|
|
public function testDeleteSharedFolderFails() {
|
|
$dir = $this->getRootDir();
|
|
$dir->delete();
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public function testDeleteFolderWhenAllowed() {
|
|
// deletion allowed
|
|
$this->info->expects($this->once())
|
|
->method('isDeletable')
|
|
->will($this->returnValue(true));
|
|
|
|
// but fails
|
|
$this->view->expects($this->once())
|
|
->method('rmdir')
|
|
->will($this->returnValue(true));
|
|
|
|
$dir = $this->getRootDir();
|
|
$dir->delete();
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Sabre\DAV\Exception\Forbidden
|
|
*/
|
|
public function testDeleteFolderFailsWhenNotAllowed() {
|
|
$this->info->expects($this->once())
|
|
->method('isDeletable')
|
|
->will($this->returnValue(false));
|
|
|
|
$dir = $this->getRootDir();
|
|
$dir->delete();
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Sabre\DAV\Exception\Forbidden
|
|
*/
|
|
public function testDeleteFolderThrowsWhenDeletionFailed() {
|
|
// deletion allowed
|
|
$this->info->expects($this->once())
|
|
->method('isDeletable')
|
|
->will($this->returnValue(true));
|
|
|
|
// but fails
|
|
$this->view->expects($this->once())
|
|
->method('rmdir')
|
|
->will($this->returnValue(false));
|
|
|
|
$dir = $this->getRootDir();
|
|
$dir->delete();
|
|
}
|
|
|
|
public function testGetChildren() {
|
|
$info1 = $this->getMockBuilder('OC\Files\FileInfo')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$info2 = $this->getMockBuilder('OC\Files\FileInfo')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$info1->expects($this->any())
|
|
->method('getName')
|
|
->will($this->returnValue('first'));
|
|
$info1->expects($this->any())
|
|
->method('getEtag')
|
|
->will($this->returnValue('abc'));
|
|
$info2->expects($this->any())
|
|
->method('getName')
|
|
->will($this->returnValue('second'));
|
|
$info2->expects($this->any())
|
|
->method('getEtag')
|
|
->will($this->returnValue('def'));
|
|
|
|
$this->view->expects($this->once())
|
|
->method('getDirectoryContent')
|
|
->with('')
|
|
->will($this->returnValue(array($info1, $info2)));
|
|
|
|
$this->view->expects($this->any())
|
|
->method('getRelativePath')
|
|
->will($this->returnValue(''));
|
|
|
|
$dir = new OC_Connector_Sabre_Directory($this->view, $this->info);
|
|
$nodes = $dir->getChildren();
|
|
|
|
$this->assertEquals(2, count($nodes));
|
|
|
|
// calling a second time just returns the cached values,
|
|
// does not call getDirectoryContents again
|
|
$nodes = $dir->getChildren();
|
|
|
|
$properties = array('testprop', OC_Connector_Sabre_Node::GETETAG_PROPERTYNAME);
|
|
$this->assertEquals(2, count($nodes));
|
|
$this->assertEquals(
|
|
array(
|
|
OC_Connector_Sabre_Node::GETETAG_PROPERTYNAME => '"abc"'
|
|
),
|
|
$nodes[0]->getProperties($properties)
|
|
);
|
|
$this->assertEquals(
|
|
array(
|
|
OC_Connector_Sabre_Node::GETETAG_PROPERTYNAME => '"def"'
|
|
),
|
|
$nodes[1]->getProperties($properties)
|
|
);
|
|
}
|
|
}
|