123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352 |
- <?php
- namespace Sabre\DAVACL;
- use Sabre\DAV;
- use Sabre\HTTP;
- class PluginPropertiesTest extends \PHPUnit_Framework_TestCase {
- function testPrincipalCollectionSet() {
- $plugin = new Plugin();
- $plugin->principalCollectionSet = [
- 'principals1',
- 'principals2',
- ];
- $requestedProperties = [
- '{DAV:}principal-collection-set',
- ];
- $server = new DAV\Server(new DAV\SimpleCollection('root'));
- $server->addPlugin($plugin);
- $result = $server->getPropertiesForPath('', $requestedProperties);
- $result = $result[0];
- $this->assertEquals(1,count($result[200]));
- $this->assertArrayHasKey('{DAV:}principal-collection-set',$result[200]);
- $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}principal-collection-set']);
- $expected = [
- 'principals1/',
- 'principals2/',
- ];
- $this->assertEquals($expected, $result[200]['{DAV:}principal-collection-set']->getHrefs());
- }
- function testCurrentUserPrincipal() {
- $fakeServer = new DAV\Server();
- $plugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
- $fakeServer->addPlugin($plugin);
- $plugin = new Plugin();
- $fakeServer->addPlugin($plugin);
- $requestedProperties = [
- '{DAV:}current-user-principal',
- ];
- $result = $fakeServer->getPropertiesForPath('', $requestedProperties);
- $result = $result[0];
- $this->assertEquals(1,count($result[200]));
- $this->assertArrayHasKey('{DAV:}current-user-principal',$result[200]);
- $this->assertInstanceOf('Sabre\DAVACL\Xml\Property\Principal', $result[200]['{DAV:}current-user-principal']);
- $this->assertEquals(Xml\Property\Principal::UNAUTHENTICATED, $result[200]['{DAV:}current-user-principal']->getType());
- // This will force the login
- $fakeServer->emit('beforeMethod', [$fakeServer->httpRequest, $fakeServer->httpResponse]);
- $result = $fakeServer->getPropertiesForPath('', $requestedProperties);
- $result = $result[0];
- $this->assertEquals(1,count($result[200]));
- $this->assertArrayHasKey('{DAV:}current-user-principal',$result[200]);
- $this->assertInstanceOf('Sabre\DAVACL\Xml\Property\Principal', $result[200]['{DAV:}current-user-principal']);
- $this->assertEquals(Xml\Property\Principal::HREF, $result[200]['{DAV:}current-user-principal']->getType());
- $this->assertEquals('principals/admin/', $result[200]['{DAV:}current-user-principal']->getHref());
- }
- function testSupportedPrivilegeSet() {
- $plugin = new Plugin();
- $server = new DAV\Server();
- $server->addPlugin($plugin);
- $requestedProperties = [
- '{DAV:}supported-privilege-set',
- ];
- $result = $server->getPropertiesForPath('', $requestedProperties);
- $result = $result[0];
- $this->assertEquals(1,count($result[200]));
- $this->assertArrayHasKey('{DAV:}supported-privilege-set',$result[200]);
- $this->assertInstanceOf('Sabre\\DAVACL\\Xml\\Property\\SupportedPrivilegeSet', $result[200]['{DAV:}supported-privilege-set']);
- $server = new DAV\Server();
- $prop = $result[200]['{DAV:}supported-privilege-set'];
- $result = $server->xml->write('{DAV:}root', $prop);
- $xpaths = [
- '/d:root' => 1,
- '/d:root/d:supported-privilege' => 1,
- '/d:root/d:supported-privilege/d:privilege' => 1,
- '/d:root/d:supported-privilege/d:privilege/d:all' => 1,
- '/d:root/d:supported-privilege/d:abstract' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege' => 2,
- '/d:root/d:supported-privilege/d:supported-privilege/d:privilege' => 2,
- '/d:root/d:supported-privilege/d:supported-privilege/d:privilege/d:read' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:privilege/d:write' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege' => 8,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege' => 8,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:read-acl' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:read-current-user-privilege-set' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:write-content' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:write-properties' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:write-acl' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:bind' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:unbind' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:unlock' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:abstract' => 0,
- ];
- // reloading because php dom sucks
- $dom2 = new \DOMDocument('1.0', 'utf-8');
- $dom2->loadXML($result);
- $dxpath = new \DOMXPath($dom2);
- $dxpath->registerNamespace('d','DAV:');
- foreach($xpaths as $xpath=>$count) {
- $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count. ' Full XML: ' . $result);
- }
- }
- function testACL() {
- $plugin = new Plugin();
- $nodes = [
- new MockACLNode('foo', [
- [
- 'principal' => 'principals/admin',
- 'privilege' => '{DAV:}read',
- ]
- ]),
- new DAV\SimpleCollection('principals', [
- $principal = new MockPrincipal('admin','principals/admin'),
- ]),
- ];
- $server = new DAV\Server($nodes);
- $server->addPlugin($plugin);
- $authPlugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
- $server->addPlugin($authPlugin);
- // Force login
- $authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response());
- $requestedProperties = [
- '{DAV:}acl',
- ];
- $result = $server->getPropertiesForPath('foo', $requestedProperties);
- $result = $result[0];
- $this->assertEquals(1,count($result[200]),'The {DAV:}acl property did not return from the list. Full list: ' . print_r($result, true));
- $this->assertArrayHasKey('{DAV:}acl',$result[200]);
- $this->assertInstanceOf('Sabre\\DAVACL\\Xml\Property\\Acl', $result[200]['{DAV:}acl']);
- }
- function testACLRestrictions() {
- $plugin = new Plugin();
- $nodes = [
- new MockACLNode('foo', [
- [
- 'principal' => 'principals/admin',
- 'privilege' => '{DAV:}read',
- ]
- ]),
- new DAV\SimpleCollection('principals', [
- $principal = new MockPrincipal('admin','principals/admin'),
- ]),
- ];
- $server = new DAV\Server($nodes);
- $server->addPlugin($plugin);
- $authPlugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
- $server->addPlugin($authPlugin);
- // Force login
- $authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response());
- $requestedProperties = [
- '{DAV:}acl-restrictions',
- ];
- $result = $server->getPropertiesForPath('foo', $requestedProperties);
- $result = $result[0];
- $this->assertEquals(1,count($result[200]),'The {DAV:}acl-restrictions property did not return from the list. Full list: ' . print_r($result, true));
- $this->assertArrayHasKey('{DAV:}acl-restrictions',$result[200]);
- $this->assertInstanceOf('Sabre\\DAVACL\\Xml\\Property\\AclRestrictions', $result[200]['{DAV:}acl-restrictions']);
- }
- function testAlternateUriSet() {
- $tree = [
- new DAV\SimpleCollection('principals', [
- $principal = new MockPrincipal('user','principals/user'),
- ])
- ];
- $fakeServer = new DAV\Server($tree);
- //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend())
- //$fakeServer->addPlugin($plugin);
- $plugin = new Plugin();
- $fakeServer->addPlugin($plugin);
- $requestedProperties = [
- '{DAV:}alternate-URI-set',
- ];
- $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
- $result = $result[0];
- $this->assertTrue(isset($result[200]));
- $this->assertTrue(isset($result[200]['{DAV:}alternate-URI-set']));
- $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}alternate-URI-set']);
- $this->assertEquals([], $result[200]['{DAV:}alternate-URI-set']->getHrefs());
- }
- function testPrincipalURL() {
- $tree = [
- new DAV\SimpleCollection('principals', [
- $principal = new MockPrincipal('user','principals/user'),
- ]),
- ];
- $fakeServer = new DAV\Server($tree);
- //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend());
- //$fakeServer->addPlugin($plugin);
- $plugin = new Plugin();
- $fakeServer->addPlugin($plugin);
- $requestedProperties = [
- '{DAV:}principal-URL',
- ];
- $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
- $result = $result[0];
- $this->assertTrue(isset($result[200]));
- $this->assertTrue(isset($result[200]['{DAV:}principal-URL']));
- $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}principal-URL']);
- $this->assertEquals('principals/user/', $result[200]['{DAV:}principal-URL']->getHref());
- }
- function testGroupMemberSet() {
- $tree = [
- new DAV\SimpleCollection('principals', [
- $principal = new MockPrincipal('user','principals/user'),
- ]),
- ];
- $fakeServer = new DAV\Server($tree);
- //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend());
- //$fakeServer->addPlugin($plugin);
- $plugin = new Plugin();
- $fakeServer->addPlugin($plugin);
- $requestedProperties = [
- '{DAV:}group-member-set',
- ];
- $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
- $result = $result[0];
- $this->assertTrue(isset($result[200]));
- $this->assertTrue(isset($result[200]['{DAV:}group-member-set']));
- $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}group-member-set']);
- $this->assertEquals([], $result[200]['{DAV:}group-member-set']->getHrefs());
- }
- function testGroupMemberShip() {
- $tree = [
- new DAV\SimpleCollection('principals', [
- $principal = new MockPrincipal('user','principals/user'),
- ]),
- ];
- $fakeServer = new DAV\Server($tree);
- $plugin = new Plugin();
- $fakeServer->addPlugin($plugin);
- $requestedProperties = [
- '{DAV:}group-membership',
- ];
- $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
- $result = $result[0];
- $this->assertTrue(isset($result[200]));
- $this->assertTrue(isset($result[200]['{DAV:}group-membership']));
- $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}group-membership']);
- $this->assertEquals([], $result[200]['{DAV:}group-membership']->getHrefs());
- }
- function testGetDisplayName() {
- $tree = [
- new DAV\SimpleCollection('principals', [
- $principal = new MockPrincipal('user','principals/user'),
- ]),
- ];
- $fakeServer = new DAV\Server($tree);
- $plugin = new Plugin();
- $fakeServer->addPlugin($plugin);
- $requestedProperties = [
- '{DAV:}displayname',
- ];
- $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
- $result = $result[0];
- $this->assertTrue(isset($result[200]));
- $this->assertTrue(isset($result[200]['{DAV:}displayname']));
- $this->assertEquals('user', $result[200]['{DAV:}displayname']);
- }
- }
|