AccessProfileCreatorTest.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. $today = new \DateTime();
  29. $this->access = new Access();
  30. $this->access
  31. ->setAdminAccess(true)
  32. ->setPerson($person)
  33. ->setOrganization(new Organization())
  34. ->setActivityYear($today->format('Y'))
  35. ;
  36. $roleHierarchyMock = $this->getMockBuilder(RoleHierarchy::class)->disableOriginalConstructor()->getMock();
  37. $roleHierarchyMock
  38. ->method('getReachableRoleNames')
  39. ->willReturn(["ROLE_A", "ROLE_B"]);
  40. $organizationProfileCreatorMock = $this->getMockBuilder(OrganizationProfileCreator::class)->disableOriginalConstructor()->getMock();
  41. $organizationProfileCreatorMock
  42. ->method('createCompleteOrganizationProfile')
  43. ->with($this->access->getOrganization())
  44. ->willReturn(new OrganizationProfile());
  45. $this->accessRepositoryMock = $this->getMockBuilder(AccessRepository::class)->disableOriginalConstructor()->getMock();
  46. $this->accessUtilsMock = $this->getMockBuilder(Utils::class)->disableOriginalConstructor()->getMock();
  47. $this->accessProfileCreator = new AccessProfileCreator(
  48. $roleHierarchyMock,
  49. $organizationProfileCreatorMock,
  50. $this->accessRepositoryMock,
  51. $this->accessUtilsMock
  52. );
  53. }
  54. /**
  55. * @see AccessProfileCreator::getAccessProfile()
  56. */
  57. public function testGetAccessProfileFailed(){
  58. $this->accessRepositoryMock
  59. ->method('findAllValidAccesses')
  60. ->with($this->access)
  61. ->willReturn([]);
  62. $this->expectException(AuthenticationException::class);
  63. $this->accessProfileCreator->getAccessProfile($this->access);
  64. }
  65. /**
  66. * @see AccessProfileCreator::createCompleteAccessProfile()
  67. */
  68. public function testCreateCompleteAccessProfile(){
  69. $accessProfile = $this->accessProfileCreator->createCompleteAccessProfile($this->access);
  70. $this->assertInstanceOf(AccessProfile::class, $accessProfile);
  71. }
  72. /**
  73. * @see AccessProfileCreator::createLightAccessProfile()
  74. */
  75. public function testCreateLightAccessProfile(){
  76. $accessProfile = $this->accessProfileCreator->createLightAccessProfile($this->access);
  77. $this->assertInstanceOf(AccessProfile::class, $accessProfile);
  78. }
  79. }