PrincipalTest.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. namespace Sabre\DAVACL;
  3. use Sabre\DAV;
  4. use Sabre\HTTP;
  5. class PrincipalTest extends \PHPUnit_Framework_TestCase {
  6. public function testConstruct() {
  7. $principalBackend = new PrincipalBackend\Mock();
  8. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  9. $this->assertTrue($principal instanceof Principal);
  10. }
  11. /**
  12. * @expectedException Sabre\DAV\Exception
  13. */
  14. public function testConstructNoUri() {
  15. $principalBackend = new PrincipalBackend\Mock();
  16. $principal = new Principal($principalBackend, array());
  17. }
  18. public function testGetName() {
  19. $principalBackend = new PrincipalBackend\Mock();
  20. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  21. $this->assertEquals('admin',$principal->getName());
  22. }
  23. public function testGetDisplayName() {
  24. $principalBackend = new PrincipalBackend\Mock();
  25. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  26. $this->assertEquals('admin',$principal->getDisplayname());
  27. $principal = new Principal($principalBackend, array(
  28. 'uri' => 'principals/admin',
  29. '{DAV:}displayname' => 'Mr. Admin'
  30. ));
  31. $this->assertEquals('Mr. Admin',$principal->getDisplayname());
  32. }
  33. public function testGetProperties() {
  34. $principalBackend = new PrincipalBackend\Mock();
  35. $principal = new Principal($principalBackend, array(
  36. 'uri' => 'principals/admin',
  37. '{DAV:}displayname' => 'Mr. Admin',
  38. '{http://www.example.org/custom}custom' => 'Custom',
  39. '{http://sabredav.org/ns}email-address' => 'admin@example.org',
  40. ));
  41. $keys = array(
  42. '{DAV:}displayname',
  43. '{http://www.example.org/custom}custom',
  44. '{http://sabredav.org/ns}email-address',
  45. );
  46. $props = $principal->getProperties($keys);
  47. foreach($keys as $key) $this->assertArrayHasKey($key,$props);
  48. $this->assertEquals('Mr. Admin',$props['{DAV:}displayname']);
  49. $this->assertEquals('admin@example.org', $props['{http://sabredav.org/ns}email-address']);
  50. }
  51. public function testUpdateProperties() {
  52. $principalBackend = new PrincipalBackend\Mock();
  53. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  54. $propPatch = new DAV\PropPatch(array('{DAV:}yourmom' => 'test'));
  55. $result = $principal->propPatch($propPatch);
  56. $result = $propPatch->commit();
  57. $this->assertTrue($result);
  58. }
  59. public function testGetPrincipalUrl() {
  60. $principalBackend = new PrincipalBackend\Mock();
  61. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  62. $this->assertEquals('principals/admin',$principal->getPrincipalUrl());
  63. }
  64. public function testGetAlternateUriSet() {
  65. $principalBackend = new PrincipalBackend\Mock();
  66. $principal = new Principal($principalBackend, array(
  67. 'uri' => 'principals/admin',
  68. '{DAV:}displayname' => 'Mr. Admin',
  69. '{http://www.example.org/custom}custom' => 'Custom',
  70. '{http://sabredav.org/ns}email-address' => 'admin@example.org',
  71. '{DAV:}alternate-URI-set' => array(
  72. 'mailto:admin+1@example.org',
  73. 'mailto:admin+2@example.org',
  74. 'mailto:admin@example.org',
  75. ),
  76. ));
  77. $expected = array(
  78. 'mailto:admin+1@example.org',
  79. 'mailto:admin+2@example.org',
  80. 'mailto:admin@example.org',
  81. );
  82. $this->assertEquals($expected,$principal->getAlternateUriSet());
  83. }
  84. public function testGetAlternateUriSetEmpty() {
  85. $principalBackend = new PrincipalBackend\Mock();
  86. $principal = new Principal($principalBackend, array(
  87. 'uri' => 'principals/admin',
  88. ));
  89. $expected = array();
  90. $this->assertEquals($expected,$principal->getAlternateUriSet());
  91. }
  92. public function testGetGroupMemberSet() {
  93. $principalBackend = new PrincipalBackend\Mock();
  94. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  95. $this->assertEquals(array(),$principal->getGroupMemberSet());
  96. }
  97. public function testGetGroupMembership() {
  98. $principalBackend = new PrincipalBackend\Mock();
  99. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  100. $this->assertEquals(array(),$principal->getGroupMembership());
  101. }
  102. public function testSetGroupMemberSet() {
  103. $principalBackend = new PrincipalBackend\Mock();
  104. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  105. $principal->setGroupMemberSet(array('principals/foo'));
  106. $this->assertEquals(array(
  107. 'principals/admin' => array('principals/foo'),
  108. ), $principalBackend->groupMembers);
  109. }
  110. public function testGetOwner() {
  111. $principalBackend = new PrincipalBackend\Mock();
  112. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  113. $this->assertEquals('principals/admin',$principal->getOwner());
  114. }
  115. public function testGetGroup() {
  116. $principalBackend = new PrincipalBackend\Mock();
  117. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  118. $this->assertNull($principal->getGroup());
  119. }
  120. public function testGetACl() {
  121. $principalBackend = new PrincipalBackend\Mock();
  122. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  123. $this->assertEquals(array(
  124. array(
  125. 'privilege' => '{DAV:}read',
  126. 'principal' => '{DAV:}authenticated',
  127. 'protected' => true,
  128. )
  129. ),$principal->getACL());
  130. }
  131. /**
  132. * @expectedException Sabre\DAV\Exception\MethodNotAllowed
  133. */
  134. public function testSetACl() {
  135. $principalBackend = new PrincipalBackend\Mock();
  136. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  137. $principal->setACL(array());
  138. }
  139. public function testGetSupportedPrivilegeSet() {
  140. $principalBackend = new PrincipalBackend\Mock();
  141. $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
  142. $this->assertNull($principal->getSupportedPrivilegeSet());
  143. }
  144. }