1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\DAVACL\PrincipalBackend; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAV; 6*a1a3b679SAndreas Boehleruse Sabre\HTTP; 7*a1a3b679SAndreas Boehler 8*a1a3b679SAndreas Boehler 9*a1a3b679SAndreas Boehlerabstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { 10*a1a3b679SAndreas Boehler 11*a1a3b679SAndreas Boehler abstract function getPDO(); 12*a1a3b679SAndreas Boehler 13*a1a3b679SAndreas Boehler function testConstruct() { 14*a1a3b679SAndreas Boehler 15*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 16*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 17*a1a3b679SAndreas Boehler $this->assertTrue($backend instanceof PDO); 18*a1a3b679SAndreas Boehler 19*a1a3b679SAndreas Boehler } 20*a1a3b679SAndreas Boehler 21*a1a3b679SAndreas Boehler /** 22*a1a3b679SAndreas Boehler * @depends testConstruct 23*a1a3b679SAndreas Boehler */ 24*a1a3b679SAndreas Boehler function testGetPrincipalsByPrefix() { 25*a1a3b679SAndreas Boehler 26*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 27*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 28*a1a3b679SAndreas Boehler 29*a1a3b679SAndreas Boehler $expected = array( 30*a1a3b679SAndreas Boehler array( 31*a1a3b679SAndreas Boehler 'uri' => 'principals/user', 32*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}email-address' => 'user@example.org', 33*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'User', 34*a1a3b679SAndreas Boehler ), 35*a1a3b679SAndreas Boehler array( 36*a1a3b679SAndreas Boehler 'uri' => 'principals/group', 37*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}email-address' => 'group@example.org', 38*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'Group', 39*a1a3b679SAndreas Boehler ), 40*a1a3b679SAndreas Boehler ); 41*a1a3b679SAndreas Boehler 42*a1a3b679SAndreas Boehler $this->assertEquals($expected, $backend->getPrincipalsByPrefix('principals')); 43*a1a3b679SAndreas Boehler $this->assertEquals(array(), $backend->getPrincipalsByPrefix('foo')); 44*a1a3b679SAndreas Boehler 45*a1a3b679SAndreas Boehler } 46*a1a3b679SAndreas Boehler 47*a1a3b679SAndreas Boehler /** 48*a1a3b679SAndreas Boehler * @depends testConstruct 49*a1a3b679SAndreas Boehler */ 50*a1a3b679SAndreas Boehler function testGetPrincipalByPath() { 51*a1a3b679SAndreas Boehler 52*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 53*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 54*a1a3b679SAndreas Boehler 55*a1a3b679SAndreas Boehler $expected = array( 56*a1a3b679SAndreas Boehler 'id' => 1, 57*a1a3b679SAndreas Boehler 'uri' => 'principals/user', 58*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}email-address' => 'user@example.org', 59*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'User', 60*a1a3b679SAndreas Boehler ); 61*a1a3b679SAndreas Boehler 62*a1a3b679SAndreas Boehler $this->assertEquals($expected, $backend->getPrincipalByPath('principals/user')); 63*a1a3b679SAndreas Boehler $this->assertEquals(null, $backend->getPrincipalByPath('foo')); 64*a1a3b679SAndreas Boehler 65*a1a3b679SAndreas Boehler } 66*a1a3b679SAndreas Boehler 67*a1a3b679SAndreas Boehler function testGetGroupMemberSet() { 68*a1a3b679SAndreas Boehler 69*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 70*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 71*a1a3b679SAndreas Boehler $expected = array('principals/user'); 72*a1a3b679SAndreas Boehler 73*a1a3b679SAndreas Boehler $this->assertEquals($expected,$backend->getGroupMemberSet('principals/group')); 74*a1a3b679SAndreas Boehler 75*a1a3b679SAndreas Boehler } 76*a1a3b679SAndreas Boehler 77*a1a3b679SAndreas Boehler function testGetGroupMembership() { 78*a1a3b679SAndreas Boehler 79*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 80*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 81*a1a3b679SAndreas Boehler $expected = array('principals/group'); 82*a1a3b679SAndreas Boehler 83*a1a3b679SAndreas Boehler $this->assertEquals($expected,$backend->getGroupMembership('principals/user')); 84*a1a3b679SAndreas Boehler 85*a1a3b679SAndreas Boehler } 86*a1a3b679SAndreas Boehler 87*a1a3b679SAndreas Boehler function testSetGroupMemberSet() { 88*a1a3b679SAndreas Boehler 89*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 90*a1a3b679SAndreas Boehler 91*a1a3b679SAndreas Boehler // Start situation 92*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 93*a1a3b679SAndreas Boehler $this->assertEquals(array('principals/user'), $backend->getGroupMemberSet('principals/group')); 94*a1a3b679SAndreas Boehler 95*a1a3b679SAndreas Boehler // Removing all principals 96*a1a3b679SAndreas Boehler $backend->setGroupMemberSet('principals/group', array()); 97*a1a3b679SAndreas Boehler $this->assertEquals(array(), $backend->getGroupMemberSet('principals/group')); 98*a1a3b679SAndreas Boehler 99*a1a3b679SAndreas Boehler // Adding principals again 100*a1a3b679SAndreas Boehler $backend->setGroupMemberSet('principals/group', array('principals/user')); 101*a1a3b679SAndreas Boehler $this->assertEquals(array('principals/user'), $backend->getGroupMemberSet('principals/group')); 102*a1a3b679SAndreas Boehler 103*a1a3b679SAndreas Boehler 104*a1a3b679SAndreas Boehler } 105*a1a3b679SAndreas Boehler 106*a1a3b679SAndreas Boehler function testSearchPrincipals() { 107*a1a3b679SAndreas Boehler 108*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 109*a1a3b679SAndreas Boehler 110*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 111*a1a3b679SAndreas Boehler 112*a1a3b679SAndreas Boehler $result = $backend->searchPrincipals('principals', array('{DAV:}blabla' => 'foo')); 113*a1a3b679SAndreas Boehler $this->assertEquals(array(), $result); 114*a1a3b679SAndreas Boehler 115*a1a3b679SAndreas Boehler $result = $backend->searchPrincipals('principals', array('{DAV:}displayname' => 'ou')); 116*a1a3b679SAndreas Boehler $this->assertEquals(array('principals/group'), $result); 117*a1a3b679SAndreas Boehler 118*a1a3b679SAndreas Boehler $result = $backend->searchPrincipals('principals', array('{DAV:}displayname' => 'UsEr', '{http://sabredav.org/ns}email-address' => 'USER@EXAMPLE')); 119*a1a3b679SAndreas Boehler $this->assertEquals(array('principals/user'), $result); 120*a1a3b679SAndreas Boehler 121*a1a3b679SAndreas Boehler $result = $backend->searchPrincipals('mom', array('{DAV:}displayname' => 'UsEr', '{http://sabredav.org/ns}email-address' => 'USER@EXAMPLE')); 122*a1a3b679SAndreas Boehler $this->assertEquals(array(), $result); 123*a1a3b679SAndreas Boehler 124*a1a3b679SAndreas Boehler } 125*a1a3b679SAndreas Boehler 126*a1a3b679SAndreas Boehler function testUpdatePrincipal() { 127*a1a3b679SAndreas Boehler 128*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 129*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 130*a1a3b679SAndreas Boehler 131*a1a3b679SAndreas Boehler $propPatch = new DAV\PropPatch([ 132*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'pietje', 133*a1a3b679SAndreas Boehler ]); 134*a1a3b679SAndreas Boehler 135*a1a3b679SAndreas Boehler $backend->updatePrincipal('principals/user', $propPatch); 136*a1a3b679SAndreas Boehler $result = $propPatch->commit(); 137*a1a3b679SAndreas Boehler 138*a1a3b679SAndreas Boehler $this->assertTrue($result); 139*a1a3b679SAndreas Boehler 140*a1a3b679SAndreas Boehler $this->assertEquals(array( 141*a1a3b679SAndreas Boehler 'id' => 1, 142*a1a3b679SAndreas Boehler 'uri' => 'principals/user', 143*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'pietje', 144*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}email-address' => 'user@example.org', 145*a1a3b679SAndreas Boehler ), $backend->getPrincipalByPath('principals/user')); 146*a1a3b679SAndreas Boehler 147*a1a3b679SAndreas Boehler } 148*a1a3b679SAndreas Boehler 149*a1a3b679SAndreas Boehler function testUpdatePrincipalUnknownField() { 150*a1a3b679SAndreas Boehler 151*a1a3b679SAndreas Boehler $pdo = $this->getPDO(); 152*a1a3b679SAndreas Boehler $backend = new PDO($pdo); 153*a1a3b679SAndreas Boehler 154*a1a3b679SAndreas Boehler $propPatch = new DAV\PropPatch([ 155*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'pietje', 156*a1a3b679SAndreas Boehler '{DAV:}unknown' => 'foo', 157*a1a3b679SAndreas Boehler ]); 158*a1a3b679SAndreas Boehler 159*a1a3b679SAndreas Boehler $backend->updatePrincipal('principals/user', $propPatch); 160*a1a3b679SAndreas Boehler $result = $propPatch->commit(); 161*a1a3b679SAndreas Boehler 162*a1a3b679SAndreas Boehler $this->assertFalse($result); 163*a1a3b679SAndreas Boehler 164*a1a3b679SAndreas Boehler $this->assertEquals(array( 165*a1a3b679SAndreas Boehler '{DAV:}displayname' => 424, 166*a1a3b679SAndreas Boehler '{DAV:}unknown' => 403 167*a1a3b679SAndreas Boehler ), $propPatch->getResult()); 168*a1a3b679SAndreas Boehler 169*a1a3b679SAndreas Boehler $this->assertEquals(array( 170*a1a3b679SAndreas Boehler 'id' => '1', 171*a1a3b679SAndreas Boehler 'uri' => 'principals/user', 172*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'User', 173*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}email-address' => 'user@example.org', 174*a1a3b679SAndreas Boehler ), $backend->getPrincipalByPath('principals/user')); 175*a1a3b679SAndreas Boehler 176*a1a3b679SAndreas Boehler } 177*a1a3b679SAndreas Boehler 178*a1a3b679SAndreas Boehler} 179