/** * Test the user_role condition. */ public function testConditions() { // Grab the user role condition and configure it to check against // authenticated user roles. /** @var $condition \Drupal\Core\Condition\ConditionInterface */ $condition = $this->manager->createInstance('user_role')->setConfig('roles', array(DRUPAL_AUTHENTICATED_RID => DRUPAL_AUTHENTICATED_RID))->setContextValue('user', $this->anonymous); $this->assertFalse($condition->execute(), 'Anonymous users fail role checks for authenticated.'); // Check for the proper summary. // Summaries require an extra space due to negate handling in summary(). $this->assertEqual($condition->summary(), 'The user is a member of Authenticated user'); // Set the user role to anonymous. $condition->setConfig('roles', array(DRUPAL_ANONYMOUS_RID => DRUPAL_ANONYMOUS_RID)); $this->assertTrue($condition->execute(), 'Anonymous users pass role checks for anonymous.'); // Check for the proper summary. $this->assertEqual($condition->summary(), 'The user is a member of Anonymous user'); // Set the user role to check anonymous or authenticated. $condition->setConfig('roles', array(DRUPAL_ANONYMOUS_RID => DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID => DRUPAL_AUTHENTICATED_RID)); $this->assertTrue($condition->execute(), 'Anonymous users pass role checks for anonymous or authenticated.'); // Check for the proper summary. $this->assertEqual($condition->summary(), 'The user is a member of Anonymous user, Authenticated user'); // Set the context to the authenticated user and check that they also pass // against anonymous or authenticated roles. $condition->setContextValue('user', $this->authenticated); $this->assertTrue($condition->execute(), 'Authenticated users pass role checks for anonymous or authenticated.'); // Set the role to just authenticated and recheck. $condition->setConfig('roles', array(DRUPAL_AUTHENTICATED_RID => DRUPAL_AUTHENTICATED_RID)); $this->assertTrue($condition->execute(), 'Authenticated users pass role checks for authenticated.'); // Test Constructor injection. $condition = $this->manager->createInstance('user_role', array('roles' => array(DRUPAL_AUTHENTICATED_RID => DRUPAL_AUTHENTICATED_RID), 'context' => array('user' => $this->authenticated))); $this->assertTrue($condition->execute(), 'Constructor injection of context and configuration working as anticipated.'); // Check the negated summary. $condition->setConfig('negate', TRUE); $this->assertEqual($condition->summary(), 'The user is not a member of Authenticated user'); // Check the complex negated summary. $condition->setConfig('roles', array(DRUPAL_ANONYMOUS_RID => DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID => DRUPAL_AUTHENTICATED_RID)); $this->assertEqual($condition->summary(), 'The user is not a member of Anonymous user, Authenticated user'); // Check a custom role. $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(), String::format('The user is a member of @roles', array('@roles' => $this->role->label()))); }