1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\DAVACL; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAV; 6*a1a3b679SAndreas Boehleruse Sabre\HTTP; 7*a1a3b679SAndreas Boehler 8*a1a3b679SAndreas Boehlerclass PrincipalTest extends \PHPUnit_Framework_TestCase { 9*a1a3b679SAndreas Boehler 10*a1a3b679SAndreas Boehler public function testConstruct() { 11*a1a3b679SAndreas Boehler 12*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 13*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 14*a1a3b679SAndreas Boehler $this->assertTrue($principal instanceof Principal); 15*a1a3b679SAndreas Boehler 16*a1a3b679SAndreas Boehler } 17*a1a3b679SAndreas Boehler 18*a1a3b679SAndreas Boehler /** 19*a1a3b679SAndreas Boehler * @expectedException Sabre\DAV\Exception 20*a1a3b679SAndreas Boehler */ 21*a1a3b679SAndreas Boehler public function testConstructNoUri() { 22*a1a3b679SAndreas Boehler 23*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 24*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array()); 25*a1a3b679SAndreas Boehler 26*a1a3b679SAndreas Boehler } 27*a1a3b679SAndreas Boehler 28*a1a3b679SAndreas Boehler public function testGetName() { 29*a1a3b679SAndreas Boehler 30*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 31*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 32*a1a3b679SAndreas Boehler $this->assertEquals('admin',$principal->getName()); 33*a1a3b679SAndreas Boehler 34*a1a3b679SAndreas Boehler } 35*a1a3b679SAndreas Boehler 36*a1a3b679SAndreas Boehler public function testGetDisplayName() { 37*a1a3b679SAndreas Boehler 38*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 39*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 40*a1a3b679SAndreas Boehler $this->assertEquals('admin',$principal->getDisplayname()); 41*a1a3b679SAndreas Boehler 42*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array( 43*a1a3b679SAndreas Boehler 'uri' => 'principals/admin', 44*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'Mr. Admin' 45*a1a3b679SAndreas Boehler )); 46*a1a3b679SAndreas Boehler $this->assertEquals('Mr. Admin',$principal->getDisplayname()); 47*a1a3b679SAndreas Boehler 48*a1a3b679SAndreas Boehler } 49*a1a3b679SAndreas Boehler 50*a1a3b679SAndreas Boehler public function testGetProperties() { 51*a1a3b679SAndreas Boehler 52*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 53*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array( 54*a1a3b679SAndreas Boehler 'uri' => 'principals/admin', 55*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'Mr. Admin', 56*a1a3b679SAndreas Boehler '{http://www.example.org/custom}custom' => 'Custom', 57*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}email-address' => 'admin@example.org', 58*a1a3b679SAndreas Boehler )); 59*a1a3b679SAndreas Boehler 60*a1a3b679SAndreas Boehler $keys = array( 61*a1a3b679SAndreas Boehler '{DAV:}displayname', 62*a1a3b679SAndreas Boehler '{http://www.example.org/custom}custom', 63*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}email-address', 64*a1a3b679SAndreas Boehler ); 65*a1a3b679SAndreas Boehler $props = $principal->getProperties($keys); 66*a1a3b679SAndreas Boehler 67*a1a3b679SAndreas Boehler foreach($keys as $key) $this->assertArrayHasKey($key,$props); 68*a1a3b679SAndreas Boehler 69*a1a3b679SAndreas Boehler $this->assertEquals('Mr. Admin',$props['{DAV:}displayname']); 70*a1a3b679SAndreas Boehler 71*a1a3b679SAndreas Boehler $this->assertEquals('admin@example.org', $props['{http://sabredav.org/ns}email-address']); 72*a1a3b679SAndreas Boehler } 73*a1a3b679SAndreas Boehler 74*a1a3b679SAndreas Boehler public function testUpdateProperties() { 75*a1a3b679SAndreas Boehler 76*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 77*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 78*a1a3b679SAndreas Boehler 79*a1a3b679SAndreas Boehler $propPatch = new DAV\PropPatch(array('{DAV:}yourmom' => 'test')); 80*a1a3b679SAndreas Boehler 81*a1a3b679SAndreas Boehler $result = $principal->propPatch($propPatch); 82*a1a3b679SAndreas Boehler $result = $propPatch->commit(); 83*a1a3b679SAndreas Boehler $this->assertTrue($result); 84*a1a3b679SAndreas Boehler 85*a1a3b679SAndreas Boehler } 86*a1a3b679SAndreas Boehler 87*a1a3b679SAndreas Boehler public function testGetPrincipalUrl() { 88*a1a3b679SAndreas Boehler 89*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 90*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 91*a1a3b679SAndreas Boehler $this->assertEquals('principals/admin',$principal->getPrincipalUrl()); 92*a1a3b679SAndreas Boehler 93*a1a3b679SAndreas Boehler } 94*a1a3b679SAndreas Boehler 95*a1a3b679SAndreas Boehler public function testGetAlternateUriSet() { 96*a1a3b679SAndreas Boehler 97*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 98*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array( 99*a1a3b679SAndreas Boehler 'uri' => 'principals/admin', 100*a1a3b679SAndreas Boehler '{DAV:}displayname' => 'Mr. Admin', 101*a1a3b679SAndreas Boehler '{http://www.example.org/custom}custom' => 'Custom', 102*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}email-address' => 'admin@example.org', 103*a1a3b679SAndreas Boehler '{DAV:}alternate-URI-set' => array( 104*a1a3b679SAndreas Boehler 'mailto:admin+1@example.org', 105*a1a3b679SAndreas Boehler 'mailto:admin+2@example.org', 106*a1a3b679SAndreas Boehler 'mailto:admin@example.org', 107*a1a3b679SAndreas Boehler ), 108*a1a3b679SAndreas Boehler )); 109*a1a3b679SAndreas Boehler 110*a1a3b679SAndreas Boehler $expected = array( 111*a1a3b679SAndreas Boehler 'mailto:admin+1@example.org', 112*a1a3b679SAndreas Boehler 'mailto:admin+2@example.org', 113*a1a3b679SAndreas Boehler 'mailto:admin@example.org', 114*a1a3b679SAndreas Boehler ); 115*a1a3b679SAndreas Boehler 116*a1a3b679SAndreas Boehler $this->assertEquals($expected,$principal->getAlternateUriSet()); 117*a1a3b679SAndreas Boehler 118*a1a3b679SAndreas Boehler } 119*a1a3b679SAndreas Boehler public function testGetAlternateUriSetEmpty() { 120*a1a3b679SAndreas Boehler 121*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 122*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array( 123*a1a3b679SAndreas Boehler 'uri' => 'principals/admin', 124*a1a3b679SAndreas Boehler )); 125*a1a3b679SAndreas Boehler 126*a1a3b679SAndreas Boehler $expected = array(); 127*a1a3b679SAndreas Boehler 128*a1a3b679SAndreas Boehler $this->assertEquals($expected,$principal->getAlternateUriSet()); 129*a1a3b679SAndreas Boehler 130*a1a3b679SAndreas Boehler } 131*a1a3b679SAndreas Boehler 132*a1a3b679SAndreas Boehler public function testGetGroupMemberSet() { 133*a1a3b679SAndreas Boehler 134*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 135*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 136*a1a3b679SAndreas Boehler $this->assertEquals(array(),$principal->getGroupMemberSet()); 137*a1a3b679SAndreas Boehler 138*a1a3b679SAndreas Boehler } 139*a1a3b679SAndreas Boehler public function testGetGroupMembership() { 140*a1a3b679SAndreas Boehler 141*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 142*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 143*a1a3b679SAndreas Boehler $this->assertEquals(array(),$principal->getGroupMembership()); 144*a1a3b679SAndreas Boehler 145*a1a3b679SAndreas Boehler } 146*a1a3b679SAndreas Boehler 147*a1a3b679SAndreas Boehler public function testSetGroupMemberSet() { 148*a1a3b679SAndreas Boehler 149*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 150*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 151*a1a3b679SAndreas Boehler $principal->setGroupMemberSet(array('principals/foo')); 152*a1a3b679SAndreas Boehler 153*a1a3b679SAndreas Boehler $this->assertEquals(array( 154*a1a3b679SAndreas Boehler 'principals/admin' => array('principals/foo'), 155*a1a3b679SAndreas Boehler ), $principalBackend->groupMembers); 156*a1a3b679SAndreas Boehler 157*a1a3b679SAndreas Boehler } 158*a1a3b679SAndreas Boehler 159*a1a3b679SAndreas Boehler public function testGetOwner() { 160*a1a3b679SAndreas Boehler 161*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 162*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 163*a1a3b679SAndreas Boehler $this->assertEquals('principals/admin',$principal->getOwner()); 164*a1a3b679SAndreas Boehler 165*a1a3b679SAndreas Boehler } 166*a1a3b679SAndreas Boehler 167*a1a3b679SAndreas Boehler public function testGetGroup() { 168*a1a3b679SAndreas Boehler 169*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 170*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 171*a1a3b679SAndreas Boehler $this->assertNull($principal->getGroup()); 172*a1a3b679SAndreas Boehler 173*a1a3b679SAndreas Boehler } 174*a1a3b679SAndreas Boehler 175*a1a3b679SAndreas Boehler public function testGetACl() { 176*a1a3b679SAndreas Boehler 177*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 178*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 179*a1a3b679SAndreas Boehler $this->assertEquals(array( 180*a1a3b679SAndreas Boehler array( 181*a1a3b679SAndreas Boehler 'privilege' => '{DAV:}read', 182*a1a3b679SAndreas Boehler 'principal' => '{DAV:}authenticated', 183*a1a3b679SAndreas Boehler 'protected' => true, 184*a1a3b679SAndreas Boehler ) 185*a1a3b679SAndreas Boehler ),$principal->getACL()); 186*a1a3b679SAndreas Boehler 187*a1a3b679SAndreas Boehler } 188*a1a3b679SAndreas Boehler 189*a1a3b679SAndreas Boehler /** 190*a1a3b679SAndreas Boehler * @expectedException Sabre\DAV\Exception\MethodNotAllowed 191*a1a3b679SAndreas Boehler */ 192*a1a3b679SAndreas Boehler public function testSetACl() { 193*a1a3b679SAndreas Boehler 194*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 195*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 196*a1a3b679SAndreas Boehler $principal->setACL(array()); 197*a1a3b679SAndreas Boehler 198*a1a3b679SAndreas Boehler } 199*a1a3b679SAndreas Boehler 200*a1a3b679SAndreas Boehler public function testGetSupportedPrivilegeSet() { 201*a1a3b679SAndreas Boehler 202*a1a3b679SAndreas Boehler $principalBackend = new PrincipalBackend\Mock(); 203*a1a3b679SAndreas Boehler $principal = new Principal($principalBackend, array('uri' => 'principals/admin')); 204*a1a3b679SAndreas Boehler $this->assertNull($principal->getSupportedPrivilegeSet()); 205*a1a3b679SAndreas Boehler 206*a1a3b679SAndreas Boehler } 207*a1a3b679SAndreas Boehler 208*a1a3b679SAndreas Boehler} 209