312 lines
9.3 KiB
PHP
312 lines
9.3 KiB
PHP
|
<?php
|
||
|
|
||
|
require_once 'Sabre/DAV/Auth/MockBackend.php';
|
||
|
require_once 'Sabre/DAVACL/MockPrincipal.php';
|
||
|
require_once 'Sabre/DAVACL/MockACLNode.php';
|
||
|
|
||
|
class Sabre_DAVACL_SimplePluginTest extends PHPUnit_Framework_TestCase {
|
||
|
|
||
|
function testValues() {
|
||
|
|
||
|
$aclPlugin = new Sabre_DAVACL_Plugin();
|
||
|
$this->assertEquals('acl',$aclPlugin->getPluginName());
|
||
|
$this->assertEquals(array('access-control'), $aclPlugin->getFeatures());
|
||
|
|
||
|
$this->assertEquals(
|
||
|
array(
|
||
|
'{DAV:}expand-property',
|
||
|
'{DAV:}principal-property-search',
|
||
|
'{DAV:}principal-search-property-set'
|
||
|
),
|
||
|
$aclPlugin->getSupportedReportSet(''));
|
||
|
|
||
|
$this->assertEquals(array('ACL'), $aclPlugin->getMethods(''));
|
||
|
|
||
|
}
|
||
|
|
||
|
function testGetFlatPrivilegeSet() {
|
||
|
|
||
|
$expected = array(
|
||
|
'{DAV:}all' => array(
|
||
|
'privilege' => '{DAV:}all',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(
|
||
|
'{DAV:}read',
|
||
|
'{DAV:}write',
|
||
|
),
|
||
|
'concrete' => null,
|
||
|
),
|
||
|
'{DAV:}read' => array(
|
||
|
'privilege' => '{DAV:}read',
|
||
|
'abstract' => false,
|
||
|
'aggregates' => array(
|
||
|
'{DAV:}read-acl',
|
||
|
'{DAV:}read-current-user-privilege-set',
|
||
|
),
|
||
|
'concrete' => '{DAV:}read',
|
||
|
),
|
||
|
'{DAV:}read-acl' => array(
|
||
|
'privilege' => '{DAV:}read-acl',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(),
|
||
|
'concrete' => '{DAV:}read',
|
||
|
),
|
||
|
'{DAV:}read-current-user-privilege-set' => array(
|
||
|
'privilege' => '{DAV:}read-current-user-privilege-set',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(),
|
||
|
'concrete' => '{DAV:}read',
|
||
|
),
|
||
|
'{DAV:}write' => array(
|
||
|
'privilege' => '{DAV:}write',
|
||
|
'abstract' => false,
|
||
|
'aggregates' => array(
|
||
|
'{DAV:}write-acl',
|
||
|
'{DAV:}write-properties',
|
||
|
'{DAV:}write-content',
|
||
|
'{DAV:}bind',
|
||
|
'{DAV:}unbind',
|
||
|
'{DAV:}unlock',
|
||
|
),
|
||
|
'concrete' => '{DAV:}write',
|
||
|
),
|
||
|
'{DAV:}write-acl' => array(
|
||
|
'privilege' => '{DAV:}write-acl',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(),
|
||
|
'concrete' => '{DAV:}write',
|
||
|
),
|
||
|
'{DAV:}write-properties' => array(
|
||
|
'privilege' => '{DAV:}write-properties',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(),
|
||
|
'concrete' => '{DAV:}write',
|
||
|
),
|
||
|
'{DAV:}write-content' => array(
|
||
|
'privilege' => '{DAV:}write-content',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(),
|
||
|
'concrete' => '{DAV:}write',
|
||
|
),
|
||
|
'{DAV:}unlock' => array(
|
||
|
'privilege' => '{DAV:}unlock',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(),
|
||
|
'concrete' => '{DAV:}write',
|
||
|
),
|
||
|
'{DAV:}bind' => array(
|
||
|
'privilege' => '{DAV:}bind',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(),
|
||
|
'concrete' => '{DAV:}write',
|
||
|
),
|
||
|
'{DAV:}unbind' => array(
|
||
|
'privilege' => '{DAV:}unbind',
|
||
|
'abstract' => true,
|
||
|
'aggregates' => array(),
|
||
|
'concrete' => '{DAV:}write',
|
||
|
),
|
||
|
|
||
|
);
|
||
|
|
||
|
$plugin = new Sabre_DAVACL_Plugin();
|
||
|
$server = new Sabre_DAV_Server();
|
||
|
$server->addPlugin($plugin);
|
||
|
$this->assertEquals($expected, $plugin->getFlatPrivilegeSet(''));
|
||
|
|
||
|
}
|
||
|
|
||
|
function testCurrentUserPrincipalsNotLoggedIn() {
|
||
|
|
||
|
$acl = new Sabre_DAVACL_Plugin();
|
||
|
$server = new Sabre_DAV_Server();
|
||
|
$server->addPlugin($acl);
|
||
|
|
||
|
$this->assertEquals(array(),$acl->getCurrentUserPrincipals());
|
||
|
|
||
|
}
|
||
|
|
||
|
function testCurrentUserPrincipalsSimple() {
|
||
|
|
||
|
$tree = array(
|
||
|
|
||
|
new Sabre_DAV_SimpleCollection('principals', array(
|
||
|
new Sabre_DAVACL_MockPrincipal('admin','principals/admin'),
|
||
|
))
|
||
|
|
||
|
);
|
||
|
|
||
|
$acl = new Sabre_DAVACL_Plugin();
|
||
|
$server = new Sabre_DAV_Server($tree);
|
||
|
$server->addPlugin($acl);
|
||
|
|
||
|
$auth = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'SabreDAV');
|
||
|
$server->addPlugin($auth);
|
||
|
|
||
|
//forcing login
|
||
|
$auth->beforeMethod('GET','/');
|
||
|
|
||
|
$this->assertEquals(array('principals/admin'),$acl->getCurrentUserPrincipals());
|
||
|
|
||
|
}
|
||
|
|
||
|
function testCurrentUserPrincipalsGroups() {
|
||
|
|
||
|
$tree = array(
|
||
|
|
||
|
new Sabre_DAV_SimpleCollection('principals', array(
|
||
|
new Sabre_DAVACL_MockPrincipal('admin','principals/admin',array('principals/administrators', 'principals/everyone')),
|
||
|
new Sabre_DAVACL_MockPrincipal('administrators','principals/administrators',array('principals/groups'), array('principals/admin')),
|
||
|
new Sabre_DAVACL_MockPrincipal('everyone','principals/everyone',array(), array('principals/admin')),
|
||
|
new Sabre_DAVACL_MockPrincipal('groups','principals/groups',array(), array('principals/administrators')),
|
||
|
))
|
||
|
|
||
|
);
|
||
|
|
||
|
$acl = new Sabre_DAVACL_Plugin();
|
||
|
$server = new Sabre_DAV_Server($tree);
|
||
|
$server->addPlugin($acl);
|
||
|
|
||
|
$auth = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'SabreDAV');
|
||
|
$server->addPlugin($auth);
|
||
|
|
||
|
//forcing login
|
||
|
$auth->beforeMethod('GET','/');
|
||
|
|
||
|
$expected = array(
|
||
|
'principals/admin',
|
||
|
'principals/administrators',
|
||
|
'principals/everyone',
|
||
|
'principals/groups',
|
||
|
);
|
||
|
|
||
|
$this->assertEquals($expected,$acl->getCurrentUserPrincipals());
|
||
|
|
||
|
}
|
||
|
|
||
|
function testGetACL() {
|
||
|
|
||
|
$acl = array(
|
||
|
array(
|
||
|
'principal' => 'principals/admin',
|
||
|
'privilege' => '{DAV:}read',
|
||
|
),
|
||
|
array(
|
||
|
'principal' => 'principals/admin',
|
||
|
'privilege' => '{DAV:}write',
|
||
|
),
|
||
|
);
|
||
|
|
||
|
|
||
|
$tree = array(
|
||
|
new Sabre_DAVACL_MockACLNode('foo',$acl),
|
||
|
);
|
||
|
|
||
|
$server = new Sabre_DAV_Server($tree);
|
||
|
$aclPlugin = new Sabre_DAVACL_Plugin();
|
||
|
$server->addPlugin($aclPlugin);
|
||
|
|
||
|
$this->assertEquals($acl,$aclPlugin->getACL('foo'));
|
||
|
|
||
|
}
|
||
|
|
||
|
function testGetCurrentUserPrivilegeSet() {
|
||
|
|
||
|
$acl = array(
|
||
|
array(
|
||
|
'principal' => 'principals/admin',
|
||
|
'privilege' => '{DAV:}read',
|
||
|
),
|
||
|
array(
|
||
|
'principal' => 'principals/user1',
|
||
|
'privilege' => '{DAV:}read',
|
||
|
),
|
||
|
array(
|
||
|
'principal' => 'principals/admin',
|
||
|
'privilege' => '{DAV:}write',
|
||
|
),
|
||
|
);
|
||
|
|
||
|
|
||
|
$tree = array(
|
||
|
new Sabre_DAVACL_MockACLNode('foo',$acl),
|
||
|
|
||
|
new Sabre_DAV_SimpleCollection('principals', array(
|
||
|
new Sabre_DAVACL_MockPrincipal('admin','principals/admin'),
|
||
|
)),
|
||
|
|
||
|
);
|
||
|
|
||
|
$server = new Sabre_DAV_Server($tree);
|
||
|
$aclPlugin = new Sabre_DAVACL_Plugin();
|
||
|
$server->addPlugin($aclPlugin);
|
||
|
|
||
|
$auth = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'SabreDAV');
|
||
|
$server->addPlugin($auth);
|
||
|
|
||
|
//forcing login
|
||
|
$auth->beforeMethod('GET','/');
|
||
|
|
||
|
$expected = array(
|
||
|
'{DAV:}write',
|
||
|
'{DAV:}write-acl',
|
||
|
'{DAV:}write-properties',
|
||
|
'{DAV:}write-content',
|
||
|
'{DAV:}bind',
|
||
|
'{DAV:}unbind',
|
||
|
'{DAV:}unlock',
|
||
|
'{DAV:}read',
|
||
|
'{DAV:}read-acl',
|
||
|
'{DAV:}read-current-user-privilege-set',
|
||
|
);
|
||
|
|
||
|
$this->assertEquals($expected,$aclPlugin->getCurrentUserPrivilegeSet('foo'));
|
||
|
|
||
|
}
|
||
|
|
||
|
function testCheckPrivileges() {
|
||
|
|
||
|
$acl = array(
|
||
|
array(
|
||
|
'principal' => 'principals/admin',
|
||
|
'privilege' => '{DAV:}read',
|
||
|
),
|
||
|
array(
|
||
|
'principal' => 'principals/user1',
|
||
|
'privilege' => '{DAV:}read',
|
||
|
),
|
||
|
array(
|
||
|
'principal' => 'principals/admin',
|
||
|
'privilege' => '{DAV:}write',
|
||
|
),
|
||
|
);
|
||
|
|
||
|
|
||
|
$tree = array(
|
||
|
new Sabre_DAVACL_MockACLNode('foo',$acl),
|
||
|
|
||
|
new Sabre_DAV_SimpleCollection('principals', array(
|
||
|
new Sabre_DAVACL_MockPrincipal('admin','principals/admin'),
|
||
|
)),
|
||
|
|
||
|
);
|
||
|
|
||
|
$server = new Sabre_DAV_Server($tree);
|
||
|
$aclPlugin = new Sabre_DAVACL_Plugin();
|
||
|
$server->addPlugin($aclPlugin);
|
||
|
|
||
|
$auth = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(),'SabreDAV');
|
||
|
$server->addPlugin($auth);
|
||
|
|
||
|
//forcing login
|
||
|
//$auth->beforeMethod('GET','/');
|
||
|
|
||
|
$this->assertFalse($aclPlugin->checkPrivileges('foo', array('{DAV:}read'), Sabre_DAVACL_Plugin::R_PARENT, false));
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|