$rids]); } /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $roles = []; $roles['role_one'] = $this->getMockBuilder('Drupal\user\Entity\Role') ->disableOriginalConstructor() ->setMethods(['hasPermission']) ->getMock(); $roles['role_one']->expects($this->any()) ->method('hasPermission') ->will($this->returnValueMap([ ['example permission', TRUE], ['another example permission', FALSE], ['last example permission', FALSE], ])); $roles['role_two'] = $this->getMockBuilder('Drupal\user\Entity\Role') ->disableOriginalConstructor() ->setMethods(['hasPermission']) ->getMock(); $roles['role_two']->expects($this->any()) ->method('hasPermission') ->will($this->returnValueMap([ ['example permission', TRUE], ['another example permission', TRUE], ['last example permission', FALSE], ])); $roles['anonymous'] = $this->getMockBuilder('Drupal\user\Entity\Role') ->disableOriginalConstructor() ->setMethods(['hasPermission']) ->getMock(); $roles['anonymous']->expects($this->any()) ->method('hasPermission') ->will($this->returnValueMap([ ['example permission', FALSE], ['another example permission', FALSE], ['last example permission', FALSE], ])); $role_storage = $this->getMockBuilder('Drupal\user\RoleStorage') ->setConstructorArgs(['role', new MemoryCache()]) ->disableOriginalConstructor() ->setMethods(['loadMultiple']) ->getMock(); $role_storage->expects($this->any()) ->method('loadMultiple') ->will($this->returnValueMap([ [[], []], [NULL, $roles], [['anonymous'], [$roles['anonymous']]], [['anonymous', 'role_one'], [$roles['role_one']]], [['anonymous', 'role_two'], [$roles['role_two']]], [['anonymous', 'role_one', 'role_two'], [$roles['role_one'], $roles['role_two']]], ])); $entity_manager = $this->getMock('Drupal\Core\Entity\EntityManagerInterface'); $entity_manager->expects($this->any()) ->method('getStorage') ->with($this->equalTo('user_role')) ->will($this->returnValue($role_storage)); $container = new ContainerBuilder(); $container->set('entity.manager', $entity_manager); \Drupal::setContainer($container); $this->users['user_one'] = $this->createUserSession(['role_one']); $this->users['user_two'] = $this->createUserSession(['role_one', 'role_two']); $this->users['user_three'] = $this->createUserSession(['role_two'], TRUE); $this->users['user_last'] = $this->createUserSession(); } /** * Tests the has permission method. * * @param string $permission * The permission to check. * @param \Drupal\Core\Session\AccountInterface[] $sessions_with_access * The users with access. * @param \Drupal\Core\Session\AccountInterface[] $sessions_without_access * The users without access. * * @dataProvider providerTestHasPermission * * @see \Drupal\Core\Session\UserSession::hasPermission() */ public function testHasPermission($permission, array $sessions_with_access, array $sessions_without_access) { foreach ($sessions_with_access as $name) { $this->assertTrue($this->users[$name]->hasPermission($permission)); } foreach ($sessions_without_access as $name) { $this->assertFalse($this->users[$name]->hasPermission($permission)); } } /** * Tests the method getRoles exclude or include locked roles based in param. * * @covers ::getRoles * @todo Move roles constants to a class/interface */ public function testUserGetRoles() { $this->assertEquals([RoleInterface::AUTHENTICATED_ID, 'role_two'], $this->users['user_three']->getRoles()); $this->assertEquals(['role_two'], $this->users['user_three']->getRoles(TRUE)); } }