You are here

public function MasqueradeTest::testMasquerade in Masquerade 8.2

Tests masquerade user links.

File

tests/src/Functional/MasqueradeTest.php, line 15

Class

MasqueradeTest
Tests form permissions and user switching functionality.

Namespace

Drupal\Tests\masquerade\Functional

Code

public function testMasquerade() {
  $this
    ->drupalLogin($this->admin_user);

  // Verify that a token is required.
  $this
    ->drupalGet('user/0/masquerade');
  $this
    ->assertSession()
    ->statusCodeEquals(403);
  $this
    ->drupalGet('user/' . $this->auth_user
    ->id() . '/masquerade');
  $this
    ->assertSession()
    ->statusCodeEquals(403);

  // Verify that the admin user is able to masquerade.
  $this
    ->assertSessionByUid($this->admin_user
    ->id());
  $this
    ->masqueradeAs($this->auth_user);
  $this
    ->assertSessionByUid($this->auth_user
    ->id(), $this->admin_user
    ->id());
  $this
    ->assertNoSessionByUid($this->admin_user
    ->id());

  // Verify that a token is required to unmasquerade.
  $this
    ->drupalGet('unmasquerade');
  $this
    ->assertSession()
    ->statusCodeEquals(403);

  // Verify that the web user cannot masquerade.
  $this
    ->drupalGet('user/' . $this->admin_user
    ->id() . '/masquerade', [
    'query' => [
      'token' => $this
        ->drupalGetToken('user/' . $this->admin_user
        ->id() . '/masquerade'),
    ],
  ]);
  $this
    ->assertSession()
    ->statusCodeEquals(403);

  // Verify that the user can unmasquerade.
  $this
    ->unmasquerade($this->auth_user);
  $this
    ->assertNoSessionByUid($this->auth_user
    ->id());
  $this
    ->assertSessionByUid($this->admin_user
    ->id());
}