]> git.mxchange.org Git - friendica-addons.git/blobdiff - dav/SabreDAV/tests/Sabre/DAVACL/PluginPropertiesTest.php
Initial Release of the calendar plugin
[friendica-addons.git] / dav / SabreDAV / tests / Sabre / DAVACL / PluginPropertiesTest.php
diff --git a/dav/SabreDAV/tests/Sabre/DAVACL/PluginPropertiesTest.php b/dav/SabreDAV/tests/Sabre/DAVACL/PluginPropertiesTest.php
new file mode 100644 (file)
index 0000000..c7a1b33
--- /dev/null
@@ -0,0 +1,404 @@
+<?php
+
+require_once 'Sabre/DAV/Auth/MockBackend.php';
+require_once 'Sabre/DAVACL/MockPrincipal.php';
+
+class Sabre_DAVACL_PluginPropertiesTest extends PHPUnit_Framework_TestCase {
+
+    function testPrincipalCollectionSet() {
+
+        $plugin = new Sabre_DAVACL_Plugin();
+        $plugin->principalCollectionSet = array(
+            'principals1',
+            'principals2',
+        );
+
+        $requestedProperties = array(
+            '{DAV:}principal-collection-set',
+        );
+
+        $returnedProperties = array(
+            200 => array(),
+            404 => array(),
+        );
+
+        $server = new Sabre_DAV_Server();
+        $server->addPlugin($plugin);
+
+        $this->assertNull($plugin->beforeGetProperties('', new Sabre_DAV_SimpleCollection('root'), $requestedProperties, $returnedProperties));
+
+        $this->assertEquals(1,count($returnedProperties[200]));
+        $this->assertArrayHasKey('{DAV:}principal-collection-set',$returnedProperties[200]);
+        $this->assertInstanceOf('Sabre_DAV_Property_HrefList', $returnedProperties[200]['{DAV:}principal-collection-set']);
+
+        $expected = array(
+            'principals1/',
+            'principals2/',
+        );
+
+
+        $this->assertEquals($expected, $returnedProperties[200]['{DAV:}principal-collection-set']->getHrefs());
+
+
+    }
+
+    function testCurrentUserPrincipal() {
+
+        $fakeServer = new Sabre_DAV_Server();
+        $plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'realm');
+        $fakeServer->addPlugin($plugin);
+        $plugin = new Sabre_DAVACL_Plugin();
+        $fakeServer->addPlugin($plugin);
+
+
+        $requestedProperties = array(
+            '{DAV:}current-user-principal',
+        );
+
+        $returnedProperties = array(
+            200 => array(),
+            404 => array(),
+        );
+
+        $this->assertNull($plugin->beforeGetProperties('', new Sabre_DAV_SimpleCollection('root'), $requestedProperties, $returnedProperties));
+
+        $this->assertEquals(1,count($returnedProperties[200]));
+        $this->assertArrayHasKey('{DAV:}current-user-principal',$returnedProperties[200]);
+        $this->assertInstanceOf('Sabre_DAVACL_Property_Principal', $returnedProperties[200]['{DAV:}current-user-principal']);
+        $this->assertEquals(Sabre_DAVACL_Property_Principal::UNAUTHENTICATED, $returnedProperties[200]['{DAV:}current-user-principal']->getType());
+
+        // This will force the login
+        $fakeServer->broadCastEvent('beforeMethod',array('GET',''));
+
+
+        $requestedProperties = array(
+            '{DAV:}current-user-principal',
+        );
+
+        $returnedProperties = array(
+            200 => array(),
+            404 => array(),
+        );
+
+
+        $this->assertNull($plugin->beforeGetProperties('', new Sabre_DAV_SimpleCollection('root'), $requestedProperties, $returnedProperties));
+
+
+        $this->assertEquals(1,count($returnedProperties[200]));
+        $this->assertArrayHasKey('{DAV:}current-user-principal',$returnedProperties[200]);
+        $this->assertInstanceOf('Sabre_DAVACL_Property_Principal', $returnedProperties[200]['{DAV:}current-user-principal']);
+        $this->assertEquals(Sabre_DAVACL_Property_Principal::HREF, $returnedProperties[200]['{DAV:}current-user-principal']->getType());
+        $this->assertEquals('principals/admin/', $returnedProperties[200]['{DAV:}current-user-principal']->getHref());
+
+    }
+
+    function testSupportedPrivilegeSet() {
+
+        $plugin = new Sabre_DAVACL_Plugin();
+        $server = new Sabre_DAV_Server();
+        $server->addPlugin($plugin);
+
+        $requestedProperties = array(
+            '{DAV:}supported-privilege-set',
+        );
+
+        $returnedProperties = array(
+            200 => array(),
+            404 => array(),
+        );
+
+
+        $this->assertNull($plugin->beforeGetProperties('', new Sabre_DAV_SimpleCollection('root'), $requestedProperties, $returnedProperties));
+
+        $this->assertEquals(1,count($returnedProperties[200]));
+        $this->assertArrayHasKey('{DAV:}supported-privilege-set',$returnedProperties[200]);
+        $this->assertInstanceOf('Sabre_DAVACL_Property_SupportedPrivilegeSet', $returnedProperties[200]['{DAV:}supported-privilege-set']);
+
+        $server = new Sabre_DAV_Server();
+        $prop = $returnedProperties[200]['{DAV:}supported-privilege-set'];
+
+        $dom = new DOMDocument('1.0', 'utf-8');
+        $root = $dom->createElement('d:root');
+        $root->setAttribute('xmlns:d','DAV:');
+        $dom->appendChild($root);
+        $prop->serialize($server, $root);
+
+
+        $xpaths = array(
+            '/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' => 8,
+        );
+
+
+        // reloading because php dom sucks
+        $dom2 = new DOMDocument('1.0', 'utf-8');
+        $dom2->loadXML($dom->saveXML());
+
+        $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);
+
+        }
+
+    }
+
+    function testACL() {
+
+        $plugin = new Sabre_DAVACL_Plugin();
+
+        $nodes = array(
+            new Sabre_DAVACL_MockACLNode('foo', array(
+                array(
+                    'principal' => 'principals/admin',
+                    'privilege' => '{DAV:}read',
+                )
+            )),
+            new Sabre_DAV_SimpleCollection('principals', array(
+                $principal = new Sabre_DAVACL_MockPrincipal('admin','principals/admin'),
+            )),
+
+        );
+
+        $server = new Sabre_DAV_Server($nodes);
+        $server->addPlugin($plugin);
+        $authPlugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'realm');
+        $server->addPlugin($authPlugin);
+
+        // Force login
+        $authPlugin->beforeMethod('BLA','foo');
+
+        $requestedProperties = array(
+            '{DAV:}acl',
+        );
+
+        $returnedProperties = array(
+            200 => array(),
+            404 => array(),
+        );
+
+
+        $this->assertNull($plugin->beforeGetProperties('foo', $nodes[0], $requestedProperties, $returnedProperties));
+
+        $this->assertEquals(1,count($returnedProperties[200]),'The {DAV:}acl property did not return from the list. Full list: ' . print_r($returnedProperties,true));
+        $this->assertArrayHasKey('{DAV:}acl',$returnedProperties[200]);
+        $this->assertInstanceOf('Sabre_DAVACL_Property_ACL', $returnedProperties[200]['{DAV:}acl']);
+
+    }
+
+    function testACLRestrictions() {
+
+        $plugin = new Sabre_DAVACL_Plugin();
+
+        $nodes = array(
+            new Sabre_DAVACL_MockACLNode('foo', array(
+                array(
+                    'principal' => 'principals/admin',
+                    'privilege' => '{DAV:}read',
+                )
+            )),
+            new Sabre_DAV_SimpleCollection('principals', array(
+                $principal = new Sabre_DAVACL_MockPrincipal('admin','principals/admin'),
+            )),
+
+        );
+
+        $server = new Sabre_DAV_Server($nodes);
+        $server->addPlugin($plugin);
+        $authPlugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'realm');
+        $server->addPlugin($authPlugin);
+
+        // Force login
+        $authPlugin->beforeMethod('BLA','foo');
+
+        $requestedProperties = array(
+            '{DAV:}acl-restrictions',
+        );
+
+        $returnedProperties = array(
+            200 => array(),
+            404 => array(),
+        );
+
+
+        $this->assertNull($plugin->beforeGetProperties('foo', $nodes[0], $requestedProperties, $returnedProperties));
+
+        $this->assertEquals(1,count($returnedProperties[200]),'The {DAV:}acl-restrictions property did not return from the list. Full list: ' . print_r($returnedProperties,true));
+        $this->assertArrayHasKey('{DAV:}acl-restrictions',$returnedProperties[200]);
+        $this->assertInstanceOf('Sabre_DAVACL_Property_ACLRestrictions', $returnedProperties[200]['{DAV:}acl-restrictions']);
+
+    }
+
+    function testAlternateUriSet() {
+
+        $tree = array(
+            new Sabre_DAV_SimpleCollection('principals', array(
+                $principal = new Sabre_DAVACL_MockPrincipal('user','principals/user'),
+            )),
+        );
+
+        $fakeServer = new Sabre_DAV_Server($tree);
+        //$plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'realm');
+        //$fakeServer->addPlugin($plugin);
+        $plugin = new Sabre_DAVACL_Plugin();
+        $fakeServer->addPlugin($plugin);
+
+        $requestedProperties = array(
+            '{DAV:}alternate-URI-set',
+        );
+        $returnedProperties = array();
+
+        $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+
+        $this->assertNull($result);
+
+        $this->assertTrue(isset($returnedProperties[200]));
+        $this->assertTrue(isset($returnedProperties[200]['{DAV:}alternate-URI-set']));
+        $this->assertInstanceOf('Sabre_DAV_Property_HrefList', $returnedProperties[200]['{DAV:}alternate-URI-set']);
+
+        $this->assertEquals(array(), $returnedProperties[200]['{DAV:}alternate-URI-set']->getHrefs());
+
+    }
+
+    function testPrincipalURL() {
+
+        $tree = array(
+            new Sabre_DAV_SimpleCollection('principals', array(
+                $principal = new Sabre_DAVACL_MockPrincipal('user','principals/user'),
+            )),
+        );
+
+        $fakeServer = new Sabre_DAV_Server($tree);
+        //$plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'realm');
+        //$fakeServer->addPlugin($plugin);
+        $plugin = new Sabre_DAVACL_Plugin();
+        $fakeServer->addPlugin($plugin);
+
+        $requestedProperties = array(
+            '{DAV:}principal-URL',
+        );
+        $returnedProperties = array();
+
+        $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+
+        $this->assertNull($result);
+
+        $this->assertTrue(isset($returnedProperties[200]));
+        $this->assertTrue(isset($returnedProperties[200]['{DAV:}principal-URL']));
+        $this->assertInstanceOf('Sabre_DAV_Property_Href', $returnedProperties[200]['{DAV:}principal-URL']);
+
+        $this->assertEquals('principals/user/', $returnedProperties[200]['{DAV:}principal-URL']->getHref());
+
+    }
+
+    function testGroupMemberSet() {
+
+        $tree = array(
+            new Sabre_DAV_SimpleCollection('principals', array(
+                $principal = new Sabre_DAVACL_MockPrincipal('user','principals/user'),
+            )),
+        );
+
+        $fakeServer = new Sabre_DAV_Server($tree);
+        //$plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'realm');
+        //$fakeServer->addPlugin($plugin);
+        $plugin = new Sabre_DAVACL_Plugin();
+        $fakeServer->addPlugin($plugin);
+
+        $requestedProperties = array(
+            '{DAV:}group-member-set',
+        );
+        $returnedProperties = array();
+
+        $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+
+        $this->assertNull($result);
+
+        $this->assertTrue(isset($returnedProperties[200]));
+        $this->assertTrue(isset($returnedProperties[200]['{DAV:}group-member-set']));
+        $this->assertInstanceOf('Sabre_DAV_Property_HrefList', $returnedProperties[200]['{DAV:}group-member-set']);
+
+        $this->assertEquals(array(), $returnedProperties[200]['{DAV:}group-member-set']->getHrefs());
+
+    }
+
+    function testGroupMemberShip() {
+
+        $tree = array(
+            new Sabre_DAV_SimpleCollection('principals', array(
+                $principal = new Sabre_DAVACL_MockPrincipal('user','principals/user'),
+            )),
+        );
+
+        $fakeServer = new Sabre_DAV_Server($tree);
+        //$plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'realm');
+        //$fakeServer->addPlugin($plugin);
+        $plugin = new Sabre_DAVACL_Plugin();
+        $fakeServer->addPlugin($plugin);
+
+        $requestedProperties = array(
+            '{DAV:}group-membership',
+        );
+        $returnedProperties = array();
+
+        $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+
+        $this->assertNull($result);
+
+        $this->assertTrue(isset($returnedProperties[200]));
+        $this->assertTrue(isset($returnedProperties[200]['{DAV:}group-membership']));
+        $this->assertInstanceOf('Sabre_DAV_Property_HrefList', $returnedProperties[200]['{DAV:}group-membership']);
+
+        $this->assertEquals(array(), $returnedProperties[200]['{DAV:}group-membership']->getHrefs());
+
+    }
+
+    function testGetDisplayName() {
+
+        $tree = array(
+            new Sabre_DAV_SimpleCollection('principals', array(
+                $principal = new Sabre_DAVACL_MockPrincipal('user','principals/user'),
+            )),
+        );
+
+        $fakeServer = new Sabre_DAV_Server($tree);
+        //$plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'realm');
+        //$fakeServer->addPlugin($plugin);
+        $plugin = new Sabre_DAVACL_Plugin();
+        $fakeServer->addPlugin($plugin);
+
+        $requestedProperties = array(
+            '{DAV:}displayname',
+        );
+        $returnedProperties = array();
+
+        $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+
+        $this->assertNull($result);
+
+        $this->assertTrue(isset($returnedProperties[200]));
+        $this->assertTrue(isset($returnedProperties[200]['{DAV:}displayname']));
+
+        $this->assertEquals('user', $returnedProperties[200]['{DAV:}displayname']);
+
+    }
+}