AccessProfileCreatorTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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\HandleOptionalsRoles;
  11. use App\Service\Access\Utils;
  12. use App\Service\Organization\OrganizationProfileCreator;
  13. use PHPUnit\Framework\TestCase;
  14. use Symfony\Component\Security\Core\Exception\AuthenticationException;
  15. use Symfony\Component\Security\Core\Role\RoleHierarchy;
  16. class AccessProfileCreatorTest extends TestCase
  17. {
  18. private Access $access;
  19. private AccessProfileCreator $accessProfileCreator;
  20. private mixed $accessRepositoryMock;
  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. $organizationProfileCreatorMock = $this->getMockBuilder(OrganizationProfileCreator::class)->disableOriginalConstructor()->getMock();
  37. $organizationProfileCreatorMock
  38. ->method('createCompleteOrganizationProfile')
  39. ->with($this->access->getOrganization())
  40. ->willReturn(new OrganizationProfile());
  41. $this->accessRepositoryMock = $this->getMockBuilder(AccessRepository::class)->disableOriginalConstructor()->getMock();
  42. $accessUtilsMock = $this->getMockBuilder(Utils::class)->disableOriginalConstructor()->getMock();
  43. $this->accessProfileCreator = new AccessProfileCreator(
  44. $organizationProfileCreatorMock,
  45. $this->accessRepositoryMock,
  46. $accessUtilsMock
  47. );
  48. }
  49. /**
  50. * @see AccessProfileCreator::getAccessProfile()
  51. */
  52. public function testGetAccessProfileFailed(){
  53. $this->accessRepositoryMock
  54. ->method('findAllValidAccesses')
  55. ->with($this->access)
  56. ->willReturn([]);
  57. $this->expectException(AuthenticationException::class);
  58. $this->accessProfileCreator->getAccessProfile($this->access);
  59. }
  60. /**
  61. * @see AccessProfileCreator::createCompleteAccessProfile()
  62. */
  63. public function testCreateCompleteAccessProfile(){
  64. $accessProfile = $this->accessProfileCreator->createCompleteAccessProfile($this->access);
  65. $this->assertInstanceOf(AccessProfile::class, $accessProfile);
  66. }
  67. /**
  68. * @see AccessProfileCreator::createLightAccessProfile()
  69. */
  70. public function testCreateLightAccessProfile(){
  71. $accessProfile = $this->accessProfileCreator->createLightAccessProfile($this->access);
  72. $this->assertInstanceOf(AccessProfile::class, $accessProfile);
  73. }
  74. }