getMockBuilder(RoleHierarchy::class)->disableOriginalConstructor()->getMock(); $roleHierarchyMock ->method('getReachableRoleNames') ->willReturn(["ROLE_A", "ROLE_B"]); $optionalsRolesIteratorMock = $this->getMockBuilder(OptionalsRolesIterator::class)->disableOriginalConstructor()->getMock(); $optionalsRolesIteratorMock ->method('getOptionalsRoles') ->willReturn(["ROLE_OPT"]); $this->accessRepositoryMock = $this->getMockBuilder(AccessRepository::class)->disableOriginalConstructor()->getMock(); $this->utils = new Utils($roleHierarchyMock, $this->accessRepositoryMock, $optionalsRolesIteratorMock); } /** * @see Utils::filterAccesses() */ public function testFilterAccesses(){ $accessMock1 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $accessMock1 ->method('getId') ->willReturn(1); $accessesMock[] = $accessMock1; $accessMock2 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $accessMock2 ->method('getId') ->willReturn(2); $accessesMock[] = $accessMock2; $accessMock3 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $accessMock3 ->method('getId') ->willReturn(3); $accessesMock[] = $accessMock3; $this->assertCount(2, $this->utils->filterAccesses($accessesMock, $accessMock2)); } /** * @see Utils::hasRoles() */ public function testHasRoles(){ $accessMock1 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $accessMock1 ->method('getRoles') ->willReturn(['ROLE_A']); $this->assertTrue($this->utils->hasRoles($accessMock1, 'ROLE_A')); } /** * @see Utils::hasRoles() */ public function testHasNotRoles(){ $accessMock1 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $accessMock1 ->method('getRoles') ->willReturn(['ROLE_A']); $this->assertFalse($this->utils->hasRoles($accessMock1, 'ROLE_X')); } /** * @see Utils::getAllRoles() */ public function testGetAllRoles(){ $accessMock1 = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $accessMock1 ->method('getRoles') ->willReturn(['ROLE_A']); $this->assertEquals(['ROLE_A', 'ROLE_B'], $this->utils->getAllRoles($accessMock1)); } /** * @see Utils::findAdminFor() */ public function testGetAdminAccess(){ $this->accessRepositoryMock ->method('findOneBy') ->willReturn(new Access()); $this->assertNotEmpty($this->utils->findAdminFor(new Organization())); } /** * @see Utils::findAdminFor() */ public function testGetAdminAccessNotFound(){ $this->accessRepositoryMock ->method('findOneBy') ->willReturn(null); $this->assertNull($this->utils->findAdminFor(new Organization())); } }