UtilsTest.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace App\Test\Service\Access;
  3. use App\Entity\Access\Access;
  4. use App\Service\Access\HandleOptionalsRoles;
  5. use App\Service\Access\Utils;
  6. use PHPUnit\Framework\TestCase;
  7. use Symfony\Component\Security\Core\Role\RoleHierarchy;
  8. class UtilsTest extends TestCase
  9. {
  10. private Utils $utils;
  11. public function setUp():void
  12. {
  13. $roleHierarchyMock = $this->getMockBuilder(RoleHierarchy::class)->disableOriginalConstructor()->getMock();
  14. $roleHierarchyMock
  15. ->method('getReachableRoleNames')
  16. ->willReturn(["ROLE_A", "ROLE_B"]);
  17. $handleOptionalsRolesMock = $this->getMockBuilder(HandleOptionalsRoles::class)->disableOriginalConstructor()->getMock();
  18. $handleOptionalsRolesMock
  19. ->method('getOptionalsRoles')
  20. ->willReturn(["ROLE_OPT"]);
  21. $this->utils = new Utils($roleHierarchyMock, $handleOptionalsRolesMock);
  22. }
  23. /**
  24. * @see Utils::filterAccesses()
  25. */
  26. public function testFilterAccesses(){
  27. $accessMock1 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock();
  28. $accessMock1
  29. ->method('getId')
  30. ->willReturn(1);
  31. $accessesMock[] = $accessMock1;
  32. $accessMock2 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock();
  33. $accessMock2
  34. ->method('getId')
  35. ->willReturn(2);
  36. $accessesMock[] = $accessMock2;
  37. $accessMock3 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock();
  38. $accessMock3
  39. ->method('getId')
  40. ->willReturn(3);
  41. $accessesMock[] = $accessMock3;
  42. $this->assertCount(2, $this->utils->filterAccesses($accessesMock, $accessMock2));
  43. }
  44. /**
  45. * @see Utils::hasRoles()
  46. */
  47. public function testHasRoles(){
  48. $accessMock1 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock();
  49. $accessMock1
  50. ->method('getRoles')
  51. ->willReturn(['ROLE_A']);
  52. $this->assertTrue($this->utils->hasRoles($accessMock1, 'ROLE_A'));
  53. }
  54. /**
  55. * @see Utils::hasRoles()
  56. */
  57. public function testHasNotRoles(){
  58. $accessMock1 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock();
  59. $accessMock1
  60. ->method('getRoles')
  61. ->willReturn(['ROLE_A']);
  62. $this->assertFalse($this->utils->hasRoles($accessMock1, 'ROLE_X'));
  63. }
  64. /**
  65. * @see Utils::getAllRoles()
  66. */
  67. public function testGetAllRoles(){
  68. $accessMock1 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock();
  69. $accessMock1
  70. ->method('getRoles')
  71. ->willReturn(['ROLE_A']);
  72. $this->assertEquals(['ROLE_A', 'ROLE_B'], $this->utils->getAllRoles($accessMock1));
  73. }
  74. }