AccessProfileCreatorTest.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Test\Service\Access;
  3. use App\ApiResources\Profile\AccessProfile;
  4. use App\ApiResources\Profile\OrganizationProfile;
  5. use App\Entity\Access\Access;
  6. use App\Entity\Organization\Organization;
  7. use App\Entity\Person\Person;
  8. use App\Repository\Access\AccessRepository;
  9. use App\Service\Access\AccessProfileCreator;
  10. use App\Service\Access\Utils;
  11. use App\Service\Organization\OrganizationProfileCreator;
  12. use PHPUnit\Framework\TestCase;
  13. use Symfony\Component\Security\Core\Exception\AuthenticationException;
  14. use Symfony\Component\Security\Core\Role\RoleHierarchy;
  15. class AccessProfileCreatorTest extends TestCase
  16. {
  17. private Access $access;
  18. private $accessProfileCreator;
  19. private $accessRepositoryMock;
  20. private $accessUtilsMock;
  21. public function setUp():void
  22. {
  23. $person = new Person();
  24. $person
  25. ->setName('Foo')
  26. ->setGivenName('Bar')
  27. ;
  28. $this->access = new Access();
  29. $this->access
  30. ->setAdminAccess(true)
  31. ->setPerson($person)
  32. ->setOrganization(new Organization())
  33. ;
  34. $roleHierarchyMock = $this->getMockBuilder(RoleHierarchy::class)->disableOriginalConstructor()->getMock();
  35. $roleHierarchyMock
  36. ->method('getReachableRoleNames')
  37. ->willReturn(["ROLE_A", "ROLE_B"]);
  38. $organizationProfileCreatorMock = $this->getMockBuilder(OrganizationProfileCreator::class)->disableOriginalConstructor()->getMock();
  39. $organizationProfileCreatorMock
  40. ->method('getOrganizationProfile')
  41. ->with($this->access->getOrganization())
  42. ->willReturn(new OrganizationProfile());
  43. $this->accessRepositoryMock = $this->getMockBuilder(AccessRepository::class)->disableOriginalConstructor()->getMock();
  44. $this->accessUtilsMock = $this->getMockBuilder(Utils::class)->disableOriginalConstructor()->getMock();
  45. $this->accessProfileCreator = new AccessProfileCreator(
  46. $roleHierarchyMock,
  47. $organizationProfileCreatorMock,
  48. $this->accessRepositoryMock,
  49. $this->accessUtilsMock
  50. );
  51. }
  52. /**
  53. * @see AccessProfileCreator::getAccessProfile()
  54. */
  55. public function testGetAccessProfileFailed(){
  56. $this->accessRepositoryMock
  57. ->method('findAllValidAccesses')
  58. ->with($this->access)
  59. ->willReturn([]);
  60. $this->expectException(AuthenticationException::class);
  61. $this->accessProfileCreator->getAccessProfile($this->access);
  62. }
  63. /**
  64. * @see AccessProfileCreator::createAccessProfile()
  65. */
  66. public function testCreateAccessProfile(){
  67. $accessProfile = $this->accessProfileCreator->createAccessProfile($this->access);
  68. $this->assertInstanceOf(AccessProfile::class, $accessProfile);
  69. }
  70. /**
  71. * @see AccessProfileCreator::createLightAccessProfile()
  72. */
  73. public function testCreateLightAccessProfile(){
  74. $accessProfile = $this->accessProfileCreator->createLightAccessProfile($this->access);
  75. $this->assertInstanceOf(AccessProfile::class, $accessProfile);
  76. }
  77. }