AdminObjectAclDataTest.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?php
  2. /*
  3. * This file is part of the Sonata package.
  4. *
  5. * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Sonata\AdminBundle\Tests\Util;
  11. use Sonata\AdminBundle\Util\AdminObjectAclData;
  12. /**
  13. * @author Kévin Dunglas <kevin@les-tilleuls.coop>
  14. */
  15. class AdminObjectAclDataTest extends \PHPUnit_Framework_TestCase
  16. {
  17. protected static function createAclUsers()
  18. {
  19. return new \ArrayIterator();
  20. }
  21. protected static function createAclRoles()
  22. {
  23. return new \ArrayIterator();
  24. }
  25. protected function createAdminObjectAclData($isOwner = true)
  26. {
  27. return new AdminObjectAclData($this->createAdmin($isOwner), new \stdClass(), self::createAclUsers(), '\Symfony\Component\Security\Acl\Permission\MaskBuilder', self::createAclRoles());
  28. }
  29. protected function createAdmin($isOwner = true)
  30. {
  31. $securityHandler = $this->getMock('Sonata\AdminBundle\Security\Handler\AclSecurityHandlerInterface');
  32. $securityHandler->expects($this->any())
  33. ->method('getObjectPermissions')
  34. ->will($this->returnValue(array('VIEW', 'EDIT', 'DELETE', 'UNDELETE', 'OPERATOR', 'MASTER', 'OWNER')))
  35. ;
  36. $securityHandler->expects($this->any())
  37. ->method('buildSecurityInformation')
  38. ->with($this->isInstanceOf('Sonata\AdminBundle\Admin\AdminInterface'))
  39. ->will($this->returnValue(array()))
  40. ;
  41. $admin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
  42. $admin->expects($this->any())
  43. ->method('isGranted')
  44. ->will($this->returnValue($isOwner))
  45. ;
  46. $admin->expects($this->any())
  47. ->method('getSecurityHandler')
  48. ->will($this->returnValue($securityHandler))
  49. ;
  50. return $admin;
  51. }
  52. public function testGetAdmin()
  53. {
  54. $adminObjectAclData = $this->createAdminObjectAclData();
  55. $this->isInstanceOf('Sonata\AdminBundle\Admin\AdminInterface', $adminObjectAclData->getAdmin());
  56. }
  57. public function testGetObject()
  58. {
  59. $adminObjectAclData = $this->createAdminObjectAclData();
  60. $this->isInstanceOf('stdClass', $adminObjectAclData->getObject());
  61. }
  62. public function testGetAclUsers()
  63. {
  64. $adminObjectAclData = $this->createAdminObjectAclData();
  65. $this->assertInstanceOf('ArrayIterator', $adminObjectAclData->getAclUsers());
  66. }
  67. public function testGetAclRoles()
  68. {
  69. $adminObjectAclData = $this->createAdminObjectAclData();
  70. $this->assertInstanceOf('ArrayIterator', $adminObjectAclData->getAclRoles());
  71. }
  72. public function testSetAcl()
  73. {
  74. $acl = $this->getMock('Symfony\Component\Security\Acl\Domain\Acl', array(), array(), '', false);
  75. $adminObjectAclData = $this->createAdminObjectAclData();
  76. $ret = $adminObjectAclData->setAcl($acl);
  77. $this->assertEquals($adminObjectAclData, $ret);
  78. return $adminObjectAclData;
  79. }
  80. /**
  81. * @depends testSetAcl
  82. */
  83. public function testGetAcl($adminObjectAclData)
  84. {
  85. $this->isInstanceOf('Symfony\Component\Security\Acl\Domain\Acl', $adminObjectAclData->getAcl());
  86. }
  87. public function testGetMasks()
  88. {
  89. $adminObjectAclData = $this->createAdminObjectAclData();
  90. $this->assertInternalType('array', $adminObjectAclData->getMasks());
  91. foreach ($adminObjectAclData->getMasks() as $key => $mask) {
  92. $this->assertInternalType('string', $key);
  93. $this->assertInternalType('int', $mask);
  94. }
  95. }
  96. /**
  97. * @group legacy
  98. *
  99. * @deprecated
  100. */
  101. public function testSetForm()
  102. {
  103. $form = $this->getMock('\Symfony\Component\Form\Form', array(), array(), '', false);
  104. $adminObjectAclData = $this->createAdminObjectAclData();
  105. $ret = $adminObjectAclData->setAclUsersForm($form);
  106. $this->assertEquals($adminObjectAclData, $ret);
  107. return $adminObjectAclData;
  108. }
  109. /**
  110. * @depends testSetForm
  111. *
  112. * @group legacy
  113. *
  114. * @deprecated
  115. */
  116. public function testGetForm($adminObjectAclData)
  117. {
  118. $this->isInstanceOf('Symfony\Component\Form\Form', $adminObjectAclData->getForm());
  119. }
  120. public function testSetAclUsersForm()
  121. {
  122. $form = $this->getMock('\Symfony\Component\Form\Form', array(), array(), '', false);
  123. $adminObjectAclData = $this->createAdminObjectAclData();
  124. $ret = $adminObjectAclData->setAclUsersForm($form);
  125. $this->assertEquals($adminObjectAclData, $ret);
  126. return $adminObjectAclData;
  127. }
  128. /**
  129. * @depends testSetAclUsersForm
  130. */
  131. public function testGetAclUsersForm($adminObjectAclData)
  132. {
  133. $this->isInstanceOf('Symfony\Component\Form\Form', $adminObjectAclData->getAclUsersForm());
  134. }
  135. public function testSetAclRolesForm()
  136. {
  137. $form = $this->getMock('\Symfony\Component\Form\Form', array(), array(), '', false);
  138. $adminObjectAclData = $this->createAdminObjectAclData();
  139. $ret = $adminObjectAclData->setAclRolesForm($form);
  140. $this->assertEquals($adminObjectAclData, $ret);
  141. return $adminObjectAclData;
  142. }
  143. /**
  144. * @depends testSetAclRolesForm
  145. */
  146. public function testGetAclRolesForm($adminObjectAclData)
  147. {
  148. $this->isInstanceOf('Symfony\Component\Form\Form', $adminObjectAclData->getAclRolesForm());
  149. }
  150. public function testGetPermissions()
  151. {
  152. $adminObjectAclData = $this->createAdminObjectAclData();
  153. $this->assertInternalType('array', $adminObjectAclData->getPermissions());
  154. foreach ($adminObjectAclData->getPermissions() as $permission) {
  155. $this->assertInternalType('string', $permission);
  156. }
  157. }
  158. public function testGetUserPermissions()
  159. {
  160. $adminObjectAclDataOwner = $this->createAdminObjectAclData();
  161. $this->assertInternalType('array', $adminObjectAclDataOwner->getUserPermissions());
  162. foreach ($adminObjectAclDataOwner->getUserPermissions() as $permission) {
  163. $this->assertInternalType('string', $permission);
  164. }
  165. $this->assertTrue(false !== array_search('OWNER', $adminObjectAclDataOwner->getUserPermissions()));
  166. $this->assertTrue(false !== array_search('MASTER', $adminObjectAclDataOwner->getUserPermissions()));
  167. $adminObjectAclData = $this->createAdminObjectAclData(false);
  168. $this->assertInternalType('array', $adminObjectAclData->getUserPermissions());
  169. foreach ($adminObjectAclData->getUserPermissions() as $permission) {
  170. $this->assertInternalType('string', $permission);
  171. }
  172. $this->assertFalse(array_search('OWNER', $adminObjectAclData->getUserPermissions()));
  173. $this->assertFalse(array_search('MASTER', $adminObjectAclData->getUserPermissions()));
  174. }
  175. public function testIsOwner()
  176. {
  177. $adminObjectAclDataOwner = $this->createAdminObjectAclData();
  178. $this->assertTrue($adminObjectAclDataOwner->isOwner());
  179. $adminObjectAclData = $this->createAdminObjectAclData(false);
  180. $this->assertFalse($adminObjectAclData->isOwner());
  181. }
  182. public function testGetSecurityHandler()
  183. {
  184. $adminObjectAclData = $this->createAdminObjectAclData();
  185. $this->isInstanceOf('Sonata\AdminBundle\Security\Handler\AclSecurityHandlerInterface', $adminObjectAclData->getSecurityHandler());
  186. }
  187. public function testGetSecurityInformation()
  188. {
  189. $adminObjectAclData = $this->createAdminObjectAclData();
  190. $this->assertEquals(array(), $adminObjectAclData->getSecurityInformation());
  191. }
  192. }