2013-10-21 22:46:31 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Sabre\DAVACL\PrincipalBackend;
|
|
|
|
|
|
|
|
use Sabre\DAV;
|
|
|
|
use Sabre\HTTP;
|
|
|
|
|
|
|
|
|
|
|
|
abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
|
|
|
|
|
|
|
|
abstract function getPDO();
|
|
|
|
|
|
|
|
function testConstruct() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
$this->assertTrue($backend instanceof PDO);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @depends testConstruct
|
|
|
|
*/
|
|
|
|
function testGetPrincipalsByPrefix() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
|
|
|
|
$expected = array(
|
|
|
|
array(
|
|
|
|
'uri' => 'principals/user',
|
|
|
|
'{http://sabredav.org/ns}email-address' => 'user@example.org',
|
|
|
|
'{DAV:}displayname' => 'User',
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'uri' => 'principals/group',
|
|
|
|
'{http://sabredav.org/ns}email-address' => 'group@example.org',
|
|
|
|
'{DAV:}displayname' => 'Group',
|
|
|
|
),
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->assertEquals($expected, $backend->getPrincipalsByPrefix('principals'));
|
|
|
|
$this->assertEquals(array(), $backend->getPrincipalsByPrefix('foo'));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @depends testConstruct
|
|
|
|
*/
|
|
|
|
function testGetPrincipalByPath() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
|
|
|
|
$expected = array(
|
|
|
|
'id' => 1,
|
|
|
|
'uri' => 'principals/user',
|
|
|
|
'{http://sabredav.org/ns}email-address' => 'user@example.org',
|
|
|
|
'{DAV:}displayname' => 'User',
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->assertEquals($expected, $backend->getPrincipalByPath('principals/user'));
|
|
|
|
$this->assertEquals(null, $backend->getPrincipalByPath('foo'));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function testGetGroupMemberSet() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
$expected = array('principals/user');
|
|
|
|
|
|
|
|
$this->assertEquals($expected,$backend->getGroupMemberSet('principals/group'));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function testGetGroupMembership() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
$expected = array('principals/group');
|
|
|
|
|
|
|
|
$this->assertEquals($expected,$backend->getGroupMembership('principals/user'));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function testSetGroupMemberSet() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
|
|
|
|
// Start situation
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
$this->assertEquals(array('principals/user'), $backend->getGroupMemberSet('principals/group'));
|
|
|
|
|
|
|
|
// Removing all principals
|
|
|
|
$backend->setGroupMemberSet('principals/group', array());
|
|
|
|
$this->assertEquals(array(), $backend->getGroupMemberSet('principals/group'));
|
|
|
|
|
|
|
|
// Adding principals again
|
|
|
|
$backend->setGroupMemberSet('principals/group', array('principals/user'));
|
|
|
|
$this->assertEquals(array('principals/user'), $backend->getGroupMemberSet('principals/group'));
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function testSearchPrincipals() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
|
|
|
|
$result = $backend->searchPrincipals('principals', array('{DAV:}blabla' => 'foo'));
|
|
|
|
$this->assertEquals(array(), $result);
|
|
|
|
|
|
|
|
$result = $backend->searchPrincipals('principals', array('{DAV:}displayname' => 'ou'));
|
|
|
|
$this->assertEquals(array('principals/group'), $result);
|
|
|
|
|
|
|
|
$result = $backend->searchPrincipals('principals', array('{DAV:}displayname' => 'UsEr', '{http://sabredav.org/ns}email-address' => 'USER@EXAMPLE'));
|
|
|
|
$this->assertEquals(array('principals/user'), $result);
|
|
|
|
|
|
|
|
$result = $backend->searchPrincipals('mom', array('{DAV:}displayname' => 'UsEr', '{http://sabredav.org/ns}email-address' => 'USER@EXAMPLE'));
|
|
|
|
$this->assertEquals(array(), $result);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function testUpdatePrincipal() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
|
2016-05-11 00:26:44 +00:00
|
|
|
$propPatch = new DAV\PropPatch([
|
2013-10-21 22:46:31 +00:00
|
|
|
'{DAV:}displayname' => 'pietje',
|
2016-05-11 00:26:44 +00:00
|
|
|
]);
|
|
|
|
|
|
|
|
$backend->updatePrincipal('principals/user', $propPatch);
|
|
|
|
$result = $propPatch->commit();
|
2013-10-21 22:46:31 +00:00
|
|
|
|
|
|
|
$this->assertTrue($result);
|
|
|
|
|
|
|
|
$this->assertEquals(array(
|
|
|
|
'id' => 1,
|
|
|
|
'uri' => 'principals/user',
|
|
|
|
'{DAV:}displayname' => 'pietje',
|
|
|
|
'{http://sabredav.org/ns}email-address' => 'user@example.org',
|
|
|
|
), $backend->getPrincipalByPath('principals/user'));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function testUpdatePrincipalUnknownField() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
|
2016-05-11 00:26:44 +00:00
|
|
|
$propPatch = new DAV\PropPatch([
|
2013-10-21 22:46:31 +00:00
|
|
|
'{DAV:}displayname' => 'pietje',
|
|
|
|
'{DAV:}unknown' => 'foo',
|
2016-05-11 00:26:44 +00:00
|
|
|
]);
|
|
|
|
|
|
|
|
$backend->updatePrincipal('principals/user', $propPatch);
|
|
|
|
$result = $propPatch->commit();
|
|
|
|
|
|
|
|
$this->assertFalse($result);
|
2013-10-21 22:46:31 +00:00
|
|
|
|
|
|
|
$this->assertEquals(array(
|
2016-05-11 00:26:44 +00:00
|
|
|
'{DAV:}displayname' => 424,
|
|
|
|
'{DAV:}unknown' => 403
|
|
|
|
), $propPatch->getResult());
|
2013-10-21 22:46:31 +00:00
|
|
|
|
|
|
|
$this->assertEquals(array(
|
|
|
|
'id' => '1',
|
|
|
|
'uri' => 'principals/user',
|
|
|
|
'{DAV:}displayname' => 'User',
|
|
|
|
'{http://sabredav.org/ns}email-address' => 'user@example.org',
|
|
|
|
), $backend->getPrincipalByPath('principals/user'));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-05-11 00:26:44 +00:00
|
|
|
function testFindByUriUnknownScheme() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
$this->assertNull($backend->findByUri('http://foo', 'principals'));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function testFindByUri() {
|
|
|
|
|
|
|
|
$pdo = $this->getPDO();
|
|
|
|
$backend = new PDO($pdo);
|
|
|
|
$this->assertEquals(
|
|
|
|
'principals/user',
|
|
|
|
$backend->findByUri('mailto:user@example.org', 'principals')
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2013-10-21 22:46:31 +00:00
|
|
|
}
|