]> git.mxchange.org Git - friendica-addons.git/blobdiff - dav/SabreDAV/tests/Sabre/DAVACL/ACLMethodTest.php
Initial Release of the calendar plugin
[friendica-addons.git] / dav / SabreDAV / tests / Sabre / DAVACL / ACLMethodTest.php
diff --git a/dav/SabreDAV/tests/Sabre/DAVACL/ACLMethodTest.php b/dav/SabreDAV/tests/Sabre/DAVACL/ACLMethodTest.php
new file mode 100644 (file)
index 0000000..4b49201
--- /dev/null
@@ -0,0 +1,326 @@
+<?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());
+
+    }
+}