]> git.mxchange.org Git - friendica-addons.git/blobdiff - dav/SabreDAV/tests/Sabre/DAVACL/Property/ACLTest.php
Initial Release of the calendar plugin
[friendica-addons.git] / dav / SabreDAV / tests / Sabre / DAVACL / Property / ACLTest.php
diff --git a/dav/SabreDAV/tests/Sabre/DAVACL/Property/ACLTest.php b/dav/SabreDAV/tests/Sabre/DAVACL/Property/ACLTest.php
new file mode 100644 (file)
index 0000000..a6efee2
--- /dev/null
@@ -0,0 +1,329 @@
+<?php
+
+class Sabre_DAVACL_Property_ACLTest extends PHPUnit_Framework_TestCase {
+
+    function testConstruct() {
+
+        $acl = new Sabre_DAVACL_Property_Acl(array());
+
+    }
+
+    function testSerializeEmpty() {
+
+        $dom = new DOMDocument('1.0');
+        $root = $dom->createElementNS('DAV:','d:root');
+
+        $dom->appendChild($root);
+
+        $acl = new Sabre_DAVACL_Property_Acl(array());
+        $acl->serialize(new Sabre_DAV_Server(), $root);
+
+        $xml = $dom->saveXML();
+        $expected = '<?xml version="1.0"?>
+<d:root xmlns:d="DAV:"/>
+';
+        $this->assertEquals($expected, $xml);
+
+    }
+
+    function testSerialize() {
+
+        $dom = new DOMDocument('1.0');
+        $root = $dom->createElementNS('DAV:','d:root');
+
+        $dom->appendChild($root);
+
+        $privileges = array(
+            array(
+                'principal' => 'principals/evert',
+                'privilege' => '{DAV:}write',
+                'uri'       => 'articles',
+            ),
+            array(
+                'principal' => 'principals/foo',
+                'privilege' => '{DAV:}read',
+                'uri'       => 'articles',
+                'protected' => true,
+            ),
+        );
+
+        $acl = new Sabre_DAVACL_Property_Acl($privileges);
+        $acl->serialize(new Sabre_DAV_Server(), $root);
+
+        $dom->formatOutput = true;
+
+        $xml = $dom->saveXML();
+        $expected = '<?xml version="1.0"?>
+<d:root xmlns:d="DAV:">
+  <d:ace>
+    <d:principal>
+      <d:href>/principals/evert/</d:href>
+    </d:principal>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+  </d:ace>
+  <d:ace>
+    <d:principal>
+      <d:href>/principals/foo/</d:href>
+    </d:principal>
+    <d:grant>
+      <d:privilege>
+        <d:read/>
+      </d:privilege>
+    </d:grant>
+    <d:protected/>
+  </d:ace>
+</d:root>
+';
+        $this->assertEquals($expected, $xml);
+
+    }
+
+    function testSerializeSpecialPrincipals() {
+
+        $dom = new DOMDocument('1.0');
+        $root = $dom->createElementNS('DAV:','d:root');
+
+        $dom->appendChild($root);
+
+        $privileges = array(
+            array(
+                'principal' => '{DAV:}authenticated',
+                'privilege' => '{DAV:}write',
+                'uri'       => 'articles',
+            ),
+            array(
+                'principal' => '{DAV:}unauthenticated',
+                'privilege' => '{DAV:}write',
+                'uri'       => 'articles',
+            ),
+            array(
+                'principal' => '{DAV:}all',
+                'privilege' => '{DAV:}write',
+                'uri'       => 'articles',
+            ),
+
+        );
+
+        $acl = new Sabre_DAVACL_Property_Acl($privileges);
+        $acl->serialize(new Sabre_DAV_Server(), $root);
+
+        $dom->formatOutput = true;
+
+        $xml = $dom->saveXML();
+        $expected = '<?xml version="1.0"?>
+<d:root xmlns:d="DAV:">
+  <d:ace>
+    <d:principal>
+      <d:authenticated/>
+    </d:principal>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+  </d:ace>
+  <d:ace>
+    <d:principal>
+      <d:unauthenticated/>
+    </d:principal>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+  </d:ace>
+  <d:ace>
+    <d:principal>
+      <d:all/>
+    </d:principal>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+  </d:ace>
+</d:root>
+';
+        $this->assertEquals($expected, $xml);
+
+    }
+
+    function testUnserialize() {
+
+        $source = '<?xml version="1.0"?>
+<d:root xmlns:d="DAV:">
+  <d:ace>
+    <d:principal>
+      <d:href>/principals/evert/</d:href>
+    </d:principal>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+  </d:ace>
+  <d:ace>
+    <d:principal>
+      <d:href>/principals/foo/</d:href>
+    </d:principal>
+    <d:grant>
+      <d:privilege>
+        <d:read/>
+      </d:privilege>
+    </d:grant>
+    <d:protected/>
+  </d:ace>
+</d:root>
+';
+
+        $dom = Sabre_DAV_XMLUtil::loadDOMDocument($source);
+        $result = Sabre_DAVACL_Property_Acl::unserialize($dom->firstChild);
+
+        $this->assertInstanceOf('Sabre_DAVACL_Property_Acl', $result);
+
+        $expected = array(
+            array(
+                'principal' => '/principals/evert/',
+                'protected' => false,
+                'privilege' => '{DAV:}write',
+            ),
+            array(
+                'principal' => '/principals/foo/',
+                'protected' => true,
+                'privilege' => '{DAV:}read',
+            ),
+        );
+
+        $this->assertEquals($expected, $result->getPrivileges());
+
+
+    }
+
+    /**
+     * @expectedException Sabre_DAV_Exception_BadRequest
+     */
+    function testUnserializeNoPrincipal() {
+
+        $source = '<?xml version="1.0"?>
+<d:root xmlns:d="DAV:">
+  <d:ace>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+  </d:ace>
+</d:root>
+';
+
+        $dom = Sabre_DAV_XMLUtil::loadDOMDocument($source);
+        Sabre_DAVACL_Property_Acl::unserialize($dom->firstChild);
+
+    }
+
+    function testUnserializeOtherPrincipal() {
+
+        $source = '<?xml version="1.0"?>
+<d:root xmlns:d="DAV:">
+  <d:ace>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+    <d:principal><d:authenticated /></d:principal>
+  </d:ace>
+  <d:ace>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+    <d:principal><d:unauthenticated /></d:principal>
+  </d:ace>
+  <d:ace>
+    <d:grant>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:grant>
+    <d:principal><d:all /></d:principal>
+  </d:ace>
+</d:root>
+';
+
+        $dom = Sabre_DAV_XMLUtil::loadDOMDocument($source);
+        $result = Sabre_DAVACL_Property_Acl::unserialize($dom->firstChild);
+
+        $this->assertInstanceOf('Sabre_DAVACL_Property_Acl', $result);
+
+        $expected = array(
+            array(
+                'principal' => '{DAV:}authenticated',
+                'protected' => false,
+                'privilege' => '{DAV:}write',
+            ),
+            array(
+                'principal' => '{DAV:}unauthenticated',
+                'protected' => false,
+                'privilege' => '{DAV:}write',
+            ),
+            array(
+                'principal' => '{DAV:}all',
+                'protected' => false,
+                'privilege' => '{DAV:}write',
+            ),
+        );
+
+        $this->assertEquals($expected, $result->getPrivileges());
+
+
+    }
+
+    /**
+     * @expectedException Sabre_DAV_Exception_NotImplemented
+     */
+    function testUnserializeDeny() {
+
+        $source = '<?xml version="1.0"?>
+<d:root xmlns:d="DAV:">
+  <d:ace>
+    <d:deny>
+      <d:privilege>
+        <d:write/>
+      </d:privilege>
+    </d:deny>
+    <d:principal><d:href>/principals/evert</d:href></d:principal>
+  </d:ace>
+</d:root>
+';
+
+        $dom = Sabre_DAV_XMLUtil::loadDOMDocument($source);
+        Sabre_DAVACL_Property_Acl::unserialize($dom->firstChild);
+    }
+
+    /**
+     * @expectedException Sabre_DAV_Exception_BadRequest
+     */
+    function testUnserializeMissingPriv() {
+
+        $source = '<?xml version="1.0"?>
+<d:root xmlns:d="DAV:">
+  <d:ace>
+    <d:grant>
+      <d:privilege />
+    </d:grant>
+    <d:principal><d:href>/principals/evert</d:href></d:principal>
+  </d:ace>
+</d:root>
+';
+
+        $dom = Sabre_DAV_XMLUtil::loadDOMDocument($source);
+        Sabre_DAVACL_Property_Acl::unserialize($dom->firstChild);
+
+    }
+}