View source
<?php
namespace Drupal\user\Tests\Condition;
use Drupal\Component\Utility\SafeMarkup;
use Drupal\simpletest\KernelTestBase;
use Drupal\user\Entity\Role;
use Drupal\user\Entity\User;
use Drupal\user\RoleInterface;
class UserRoleConditionTest extends KernelTestBase {
protected $manager;
protected $anonymous;
protected $authenticated;
protected $role;
public static $modules = array(
'system',
'user',
'field',
);
protected function setUp() {
parent::setUp();
$this
->installSchema('system', 'sequences');
$this
->installEntitySchema('user');
$this->manager = $this->container
->get('plugin.manager.condition');
Role::create(array(
'id' => RoleInterface::ANONYMOUS_ID,
'label' => 'Anonymous user',
))
->save();
Role::create(array(
'id' => RoleInterface::AUTHENTICATED_ID,
'label' => 'Authenticated user',
))
->save();
$rid = strtolower($this
->randomMachineName(8));
$label = $this
->randomString(8);
$role = Role::create(array(
'id' => $rid,
'label' => $label,
));
$role
->save();
$this->role = $role;
$this->anonymous = User::create(array(
'name' => '',
'uid' => 0,
));
$this->anonymous
->save();
$this->anonymous = User::load($this->anonymous
->id());
$this->authenticated = User::create(array(
'name' => $this
->randomMachineName(),
));
$this->authenticated
->save();
$this->authenticated
->addRole($this->role
->id());
}
public function testConditions() {
$condition = $this->manager
->createInstance('user_role')
->setConfig('roles', array(
RoleInterface::AUTHENTICATED_ID => RoleInterface::AUTHENTICATED_ID,
))
->setContextValue('user', $this->anonymous);
$this
->assertFalse($condition
->execute(), 'Anonymous users fail role checks for authenticated.');
$this
->assertEqual($condition
->summary(), 'The user is a member of Authenticated user');
$condition
->setConfig('roles', array(
RoleInterface::ANONYMOUS_ID => RoleInterface::ANONYMOUS_ID,
));
$this
->assertTrue($condition
->execute(), 'Anonymous users pass role checks for anonymous.');
$this
->assertEqual($condition
->summary(), 'The user is a member of Anonymous user');
$condition
->setConfig('roles', array(
RoleInterface::ANONYMOUS_ID => RoleInterface::ANONYMOUS_ID,
RoleInterface::AUTHENTICATED_ID => RoleInterface::AUTHENTICATED_ID,
));
$this
->assertTrue($condition
->execute(), 'Anonymous users pass role checks for anonymous or authenticated.');
$this
->assertEqual($condition
->summary(), 'The user is a member of Anonymous user, Authenticated user');
$condition
->setContextValue('user', $this->authenticated);
$this
->assertTrue($condition
->execute(), 'Authenticated users pass role checks for anonymous or authenticated.');
$condition
->setConfig('roles', array(
RoleInterface::AUTHENTICATED_ID => RoleInterface::AUTHENTICATED_ID,
));
$this
->assertTrue($condition
->execute(), 'Authenticated users pass role checks for authenticated.');
$condition = $this->manager
->createInstance('user_role', array(
'roles' => array(
RoleInterface::AUTHENTICATED_ID => RoleInterface::AUTHENTICATED_ID,
),
'context' => array(
'user' => $this->authenticated,
),
));
$this
->assertTrue($condition
->execute(), 'Constructor injection of context and configuration working as anticipated.');
$condition
->setConfig('negate', TRUE);
$this
->assertEqual($condition
->summary(), 'The user is not a member of Authenticated user');
$condition
->setConfig('roles', array(
RoleInterface::ANONYMOUS_ID => RoleInterface::ANONYMOUS_ID,
RoleInterface::AUTHENTICATED_ID => RoleInterface::AUTHENTICATED_ID,
));
$this
->assertEqual($condition
->summary(), 'The user is not a member of Anonymous user, Authenticated user');
$condition
->setConfig('roles', array(
$this->role
->id() => $this->role
->id(),
));
$condition
->setConfig('negate', FALSE);
$this
->assertTrue($condition
->execute(), 'Authenticated user is a member of the custom role.');
$this
->assertEqual($condition
->summary(), SafeMarkup::format('The user is a member of @roles', array(
'@roles' => $this->role
->label(),
)));
}
}