<?php class Sabre_DAVACL_ACLMethodTest extends PHPUnit_Framework_TestCase { /** * @expectedException Sabre_DAV_Exception_BadRequest */ function testCallback() { $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server(); $server->addPlugin($acl); $acl->unknownMethod('ACL','test'); } function testCallbackPassthru() { $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server(); $server->addPlugin($acl); $this->assertNull($acl->unknownMethod('FOO','test')); } /** /** * @expectedException Sabre_DAV_Exception_MethodNotAllowed */ function testNotSupportedByNode() { $tree = array( new Sabre_DAV_SimpleCollection('test'), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $acl->httpACL('test'); } function testSuccessSimple() { $tree = array( new Sabre_DAVACL_MockACLNode('test',array()), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $this->assertNull($acl->httpACL('test')); } /** * @expectedException Sabre_DAVACL_Exception_NotRecognizedPrincipal */ function testUnrecognizedPrincipal() { $tree = array( new Sabre_DAVACL_MockACLNode('test',array()), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> <d:ace> <d:grant><d:privilege><d:read /></d:privilege></d:grant> <d:principal><d:href>/principals/notfound</d:href></d:principal> </d:ace> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $acl->httpACL('test'); } /** * @expectedException Sabre_DAVACL_Exception_NotRecognizedPrincipal */ function testUnrecognizedPrincipal2() { $tree = array( new Sabre_DAVACL_MockACLNode('test',array()), new Sabre_DAV_SimpleCollection('principals',array( new Sabre_DAV_SimpleCollection('notaprincipal'), )), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> <d:ace> <d:grant><d:privilege><d:read /></d:privilege></d:grant> <d:principal><d:href>/principals/notaprincipal</d:href></d:principal> </d:ace> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $acl->httpACL('test'); } /** * @expectedException Sabre_DAVACL_Exception_NotSupportedPrivilege */ function testUnknownPrivilege() { $tree = array( new Sabre_DAVACL_MockACLNode('test',array()), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> <d:ace> <d:grant><d:privilege><d:bananas /></d:privilege></d:grant> <d:principal><d:href>/principals/notfound</d:href></d:principal> </d:ace> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $acl->httpACL('test'); } /** * @expectedException Sabre_DAVACL_Exception_NoAbstract */ function testAbstractPrivilege() { $tree = array( new Sabre_DAVACL_MockACLNode('test',array()), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> <d:ace> <d:grant><d:privilege><d:read-acl /></d:privilege></d:grant> <d:principal><d:href>/principals/notfound</d:href></d:principal> </d:ace> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $acl->httpACL('test'); } /** * @expectedException Sabre_DAVACL_Exception_AceConflict */ function testUpdateProtectedPrivilege() { $oldACL = array( array( 'principal' => 'principals/notfound', 'privilege' => '{DAV:}write', 'protected' => true, ), ); $tree = array( new Sabre_DAVACL_MockACLNode('test',$oldACL), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> <d:ace> <d:grant><d:privilege><d:read /></d:privilege></d:grant> <d:principal><d:href>/principals/notfound</d:href></d:principal> </d:ace> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $acl->httpACL('test'); } /** * @expectedException Sabre_DAVACL_Exception_AceConflict */ function testUpdateProtectedPrivilege2() { $oldACL = array( array( 'principal' => 'principals/notfound', 'privilege' => '{DAV:}write', 'protected' => true, ), ); $tree = array( new Sabre_DAVACL_MockACLNode('test',$oldACL), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> <d:ace> <d:grant><d:privilege><d:write /></d:privilege></d:grant> <d:principal><d:href>/principals/foo</d:href></d:principal> </d:ace> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $acl->httpACL('test'); } /** * @expectedException Sabre_DAVACL_Exception_AceConflict */ function testUpdateProtectedPrivilege3() { $oldACL = array( array( 'principal' => 'principals/notfound', 'privilege' => '{DAV:}write', 'protected' => true, ), ); $tree = array( new Sabre_DAVACL_MockACLNode('test',$oldACL), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> <d:ace> <d:grant><d:privilege><d:write /></d:privilege></d:grant> <d:principal><d:href>/principals/notfound</d:href></d:principal> </d:ace> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $acl->httpACL('test'); } function testSuccessComplex () { $oldACL = array( array( 'principal' => 'principals/foo', 'privilege' => '{DAV:}write', 'protected' => true, ), array( 'principal' => 'principals/bar', 'privilege' => '{DAV:}read', ), ); $tree = array( $node = new Sabre_DAVACL_MockACLNode('test',$oldACL), new Sabre_DAV_SimpleCollection('principals', array( new Sabre_DAVACL_MockPrincipal('foo','principals/foo'), new Sabre_DAVACL_MockPrincipal('baz','principals/baz'), )), ); $acl = new Sabre_DAVACL_Plugin(); $server = new Sabre_DAV_Server($tree); $server->httpRequest = new Sabre_HTTP_Request(); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> <d:ace> <d:grant><d:privilege><d:write /></d:privilege></d:grant> <d:principal><d:href>/principals/foo</d:href></d:principal> <d:protected /> </d:ace> <d:ace> <d:grant><d:privilege><d:write /></d:privilege></d:grant> <d:principal><d:href>/principals/baz</d:href></d:principal> </d:ace> </d:acl>'; $server->httpRequest->setBody($body); $server->addPlugin($acl); $this->assertFalse($acl->unknownMethod('ACL','test')); $this->assertEquals(array( array( 'principal' => 'principals/foo', 'privilege' => '{DAV:}write', 'protected' => true, ), array( 'principal' => 'principals/baz', 'privilege' => '{DAV:}write', 'protected' => false, ), ), $node->getACL()); } }