public function MasqueradeAccessTest::testAccess in Masquerade 8.2
Tests masquerade access for different source and target users.
Test plan summary:
- root » admin
- admin » root
- admin » moderator (more roles but less privileges)
- admin » super (administrator and editor roles)
- admin » lead (editor roles)
- admin » masquerade (different role)
- admin » auth (less roles)
- moderator ! root
- moderator ! admin (less roles but more privileges)
- moderator ! editor (different roles + privileges)
- moderator » super (administrator and editor roles)
- moderator » lead (editor roles)
- moderator » auth
- [editor is access-logic-wise equal to moderator, so skipped]
- masquerade ! root
- masquerade ! admin (different role with more privileges)
- masquerade ! moderator (more roles)
- masquerade ! lead (editor roles)
- masquerade ! super (administrator and editor roles)
- masquerade » auth
- masquerade ! masquerade (self)
- lead ! root
- lead ! admin (different role with more privileges)
- lead ! moderator (more roles)
- lead ! super (administrator and editor roles)
- lead » editor
- lead » auth
- auth ! *
File
- tests/
src/ Functional/ MasqueradeAccessTest.php, line 50
Class
- MasqueradeAccessTest
- Tests masquerade access mechanism.
Namespace
Drupal\Tests\masquerade\FunctionalCode
public function testAccess() {
$this
->drupalLogin($this->rootUser);
$this
->assertCanMasqueradeAs($this->admin_user);
$this
->drupalLogin($this->admin_user);
// Permission 'masquerade as super user' granted by default.
$this
->assertCanMasqueradeAs($this->rootUser);
// Permission 'masquerade as any user' granted by default.
$this
->assertCanMasqueradeAs($this->moderator_user);
$this
->assertCanMasqueradeAs($this->superUser);
$this
->assertCanMasqueradeAs($this->leadEditorUser);
$this
->assertCanMasqueradeAs($this->editor_user);
$this
->assertCanMasqueradeAs($this->masquerade_user);
$this
->assertCanMasqueradeAs($this->auth_user);
// Test 'masquerade as any user' permission except UID 1.
$this
->drupalLogin($this->moderator_user);
$this
->assertCanNotMasqueradeAs($this->rootUser);
$this
->assertCanMasqueradeAs($this->admin_user);
$this
->assertCanMasqueradeAs($this->superUser);
$this
->assertCanMasqueradeAs($this->leadEditorUser);
$this
->assertCanMasqueradeAs($this->editor_user);
$this
->assertCanMasqueradeAs($this->masquerade_user);
$this
->assertCanMasqueradeAs($this->auth_user);
// Test 'masquerade as @role' permission.
$this
->drupalLogin($this->editor_user);
$this
->assertCanNotMasqueradeAs($this->rootUser);
$this
->assertCanNotMasqueradeAs($this->admin_user);
$this
->assertCanNotMasqueradeAs($this->moderator_user);
$this
->assertCanNotMasqueradeAs($this->superUser);
$this
->assertCanNotMasqueradeAs($this->leadEditorUser);
$this
->assertCanMasqueradeAs($this->masquerade_user);
$this
->assertCanMasqueradeAs($this->auth_user);
// Test 'masquerade as @role' permission.
$this
->drupalLogin($this->leadEditorUser);
$this
->assertCanNotMasqueradeAs($this->rootUser);
$this
->assertCanNotMasqueradeAs($this->admin_user);
$this
->assertCanNotMasqueradeAs($this->moderator_user);
$this
->assertCanNotMasqueradeAs($this->superUser);
$this
->assertCanNotMasqueradeAs($this->masquerade_user);
$this
->assertCanMasqueradeAs($this->editor_user);
$this
->assertCanMasqueradeAs($this->auth_user);
// Test 'masquerade as authenticated' permission.
$this
->drupalLogin($this->masquerade_user);
$this
->assertCanNotMasqueradeAs($this->rootUser);
$this
->assertCanNotMasqueradeAs($this->admin_user);
$this
->assertCanNotMasqueradeAs($this->moderator_user);
$this
->assertCanNotMasqueradeAs($this->superUser);
$this
->assertCanNotMasqueradeAs($this->leadEditorUser);
$this
->assertCanNotMasqueradeAs($this->editor_user);
$this
->assertCanMasqueradeAs($this->auth_user);
// Verify that a user cannot masquerade as himself.
$edit = [
'masquerade_as' => $this->masquerade_user
->getAccountName(),
];
$this
->drupalGet('masquerade');
$this
->submitForm($edit, 'Switch');
$this
->assertSession()
->responseContains($this
->t('You cannot masquerade as yourself. Please choose a different user to masquerade as.'));
$this
->assertSession()
->pageTextNotContains('Unmasquerade');
// Basic 'masquerade' permission check.
$this
->drupalLogin($this->auth_user);
$this
->drupalGet('masquerade');
$this
->assertSession()
->statusCodeEquals(403);
}