330 lines
7.3 KiB
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);
|
|
|
|
}
|
|
}
|