friendica-addons/dav/SabreDAV/tests/Sabre/DAVACL/ACLMethodTest.php

327 lines
9.0 KiB
PHP

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