PageExampleTest.php in Examples for Developers 3.x
File
modules/page_example/tests/src/Functional/PageExampleTest.php
View source
<?php
namespace Drupal\Tests\page_example\Functional;
use Drupal\Component\Render\FormattableMarkup;
use Drupal\Tests\BrowserTestBase;
class PageExampleTest extends BrowserTestBase {
protected $defaultTheme = 'stark';
public static $modules = [
'page_example',
];
protected $profile = 'minimal';
protected $webUser;
protected static function randomNumber($length = 8) {
$str = '';
for ($i = 0; $i < $length; $i++) {
$str .= chr(mt_rand(48, 57));
}
return $str;
}
public function pageExampleVerifyNoAccess($url) {
$this
->drupalGet($url);
$this
->assertSession()
->statusCodeEquals(403);
}
public function providerMenuLinks() {
return [
[
'',
[
'' => '/examples/page-example',
],
],
[
'access simple page',
[
'/examples/page-example' => '/examples/page-example/simple',
],
],
];
}
public function testPageExampleLinks($permission, $links) {
if ($permission) {
$user = $this
->drupalCreateUser([
$permission,
]);
$this
->drupalLogin($user);
}
foreach ($links as $page => $path) {
$this
->drupalGet($page);
$this
->assertSession()
->linkByHrefExists($path);
}
if ($permission) {
$this
->drupalLogout();
}
}
public function testPageExample() {
$assert_session = $this
->assertSession();
$this
->pageExampleVerifyNoAccess('examples/page-example/simple');
$this
->pageExampleVerifyNoAccess('examples/page-example/arguments/1/2');
$this->webUser = $this
->drupalCreateUser();
$this
->drupalLogin($this->webUser);
$this
->pageExampleVerifyNoAccess('examples/page-example/simple');
$this
->pageExampleVerifyNoAccess('examples/page-example/arguments/1/2');
$this->webUser = $this
->drupalCreateUser([
'access simple page',
]);
$this
->drupalLogin($this->webUser);
$this
->drupalGet('/examples/page-example/simple');
$assert_session
->statusCodeEquals(200);
$assert_session
->pageTextContains('The quick brown fox jumps over the lazy dog.');
$this
->pageExampleVerifyNoAccess('examples/page-example/arguments/1/2');
$this->webUser = $this
->drupalCreateUser([
'access arguments page',
]);
$this
->drupalLogin($this->webUser);
$first = self::randomNumber(3);
$second = self::randomNumber(3);
$this
->drupalGet('/examples/page-example/arguments/' . $first . '/' . $second);
$assert_session
->statusCodeEquals(200);
$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,
]));
$this
->drupalGet('/examples/page-example/arguments/' . $first . '/');
$assert_session
->statusCodeEquals(404);
$this
->drupalGet('/examples/page-example/arguments/' . $first . '/non-numeric-argument');
$assert_session
->statusCodeEquals(403);
$this
->drupalGet('/examples/page-example/arguments/non-numeric-argument/' . $second);
$assert_session
->statusCodeEquals(403);
$this
->pageExampleVerifyNoAccess('examples/page-example/simple');
}
}
Classes
Name |
Description |
PageExampleTest |
Creates page and render the content based on the arguments passed in the URL. |