friendica-addons/dav/SabreDAV/tests/Sabre/DAVACL/Property/ACLTest.php

330 lines
7.3 KiB
PHP

<?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);
}
}