MasqueradeAccessTest.php in Masquerade 8.2
File
tests/src/Functional/MasqueradeAccessTest.php
View source
<?php
namespace Drupal\Tests\masquerade\Functional;
use Drupal\Core\Session\AccountInterface;
class MasqueradeAccessTest extends MasqueradeWebTestBase {
public function testAccess() {
$this
->drupalLogin($this->rootUser);
$this
->assertCanMasqueradeAs($this->admin_user);
$this
->drupalLogin($this->admin_user);
$this
->assertCanMasqueradeAs($this->rootUser);
$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);
$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);
$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);
$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);
$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);
$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');
$this
->drupalLogin($this->auth_user);
$this
->drupalGet('masquerade');
$this
->assertSession()
->statusCodeEquals(403);
}
protected function assertCanMasqueradeAs(AccountInterface $target_account) {
$edit = [
'masquerade_as' => $target_account
->getAccountName(),
];
$this
->drupalGet('masquerade');
$this
->submitForm($edit, 'Switch');
$this
->assertSession()
->responseNotContains($this
->t('You are not allowed to masquerade as %name.', [
'%name' => $target_account
->getDisplayName(),
]));
$this
->clickLink('Unmasquerade');
}
protected function assertCanNotMasqueradeAs(AccountInterface $target_account) {
$edit = [
'masquerade_as' => $target_account
->getAccountName(),
];
$this
->drupalGet('masquerade');
$this
->submitForm($edit, 'Switch');
$this
->assertSession()
->responseContains($this
->t('You are not allowed to masquerade as %name.', [
'%name' => $target_account
->getDisplayName(),
]));
$this
->assertSession()
->pageTextNotContains('Unmasquerade');
}
}