You are here

public function PageExampleTest::testPageExample in Examples for Developers 8

Same name and namespace in other branches
  1. 3.x modules/page_example/tests/src/Functional/PageExampleTest.php \Drupal\Tests\page_example\Functional\PageExampleTest::testPageExample()

Main test.

Login user, create an example node, and test page functionality through the admin and user interfaces.

File

page_example/tests/src/Functional/PageExampleTest.php, line 124

Class

PageExampleTest
Creates page and render the content based on the arguments passed in the URL.

Namespace

Drupal\Tests\page_example\Functional

Code

public function testPageExample() {
  $assert_session = $this
    ->assertSession();

  // Verify that anonymous user can't access the pages created by
  // page_example module.
  $this
    ->pageExampleVerifyNoAccess('examples/page-example/simple');
  $this
    ->pageExampleVerifyNoAccess('examples/page-example/arguments/1/2');

  // Create a regular user and login.
  $this->webUser = $this
    ->drupalCreateUser();
  $this
    ->drupalLogin($this->webUser);

  // Verify that regular user can't access the pages created by
  // page_example module.
  $this
    ->pageExampleVerifyNoAccess('examples/page-example/simple');
  $this
    ->pageExampleVerifyNoAccess('examples/page-example/arguments/1/2');

  // Create a user with permissions to access 'simple' page and login.
  $this->webUser = $this
    ->drupalCreateUser([
    'access simple page',
  ]);
  $this
    ->drupalLogin($this->webUser);

  // Verify that user can access simple content.
  $this
    ->drupalGet('/examples/page-example/simple');
  $assert_session
    ->statusCodeEquals(200);
  $assert_session
    ->pageTextContains('The quick brown fox jumps over the lazy dog.');

  // Check if user can't access arguments page.
  $this
    ->pageExampleVerifyNoAccess('examples/page-example/arguments/1/2');

  // Create a user with permissions to access 'simple' page and login.
  $this->webUser = $this
    ->drupalCreateUser([
    'access arguments page',
  ]);
  $this
    ->drupalLogin($this->webUser);

  // Verify that user can access arguments content.
  $first = self::randomNumber(3);
  $second = self::randomNumber(3);
  $this
    ->drupalGet('/examples/page-example/arguments/' . $first . '/' . $second);
  $assert_session
    ->statusCodeEquals(200);

  // Verify argument usage.
  $assert_session
    ->pageTextContains((string) new FormattableMarkup('First number was @number.', [
    '@number' => $first,
  ]));
  $assert_session
    ->pageTextContains((string) new FormattableMarkup('Second number was @number.', [
    '@number' => $second,
  ]));
  $assert_session
    ->pageTextContains((string) new FormattableMarkup('The total was @number.', [
    '@number' => $first + $second,
  ]));

  // Verify incomplete argument call to arguments content.
  $this
    ->drupalGet('/examples/page-example/arguments/' . $first . '/');
  $assert_session
    ->statusCodeEquals(404);

  // Verify 403 for invalid second argument.
  $this
    ->drupalGet('/examples/page-example/arguments/' . $first . '/non-numeric-argument');
  $assert_session
    ->statusCodeEquals(403);

  // Verify 403 for invalid first argument.
  $this
    ->drupalGet('/examples/page-example/arguments/non-numeric-argument/' . $second);
  $assert_session
    ->statusCodeEquals(403);

  // Check if user can't access simple page.
  $this
    ->pageExampleVerifyNoAccess('examples/page-example/simple');
}