You are here

public function DomainTokenTest::testDomainTokens in Domain Access 8

Tests the handling of an inbound request.

File

domain/tests/src/Functional/DomainTokenTest.php, line 24

Class

DomainTokenTest
Tests the domain token handler.

Namespace

Drupal\Tests\domain\Functional

Code

public function testDomainTokens() {

  // No domains should exist.
  $this
    ->domainTableIsEmpty();

  // Create four new domains programmatically.
  $this
    ->domainCreateTestDomains(4);

  // Since we cannot read the service request, we place a block
  // which shows the current domain token information.
  $this
    ->drupalPlaceBlock('domain_token_block');

  // To get around block access, let the anon user view the block.
  user_role_grant_permissions(AccountInterface::ANONYMOUS_ROLE, [
    'view domain information',
  ]);

  // Test the response of the default home page.
  foreach (\Drupal::entityTypeManager()
    ->getStorage('domain')
    ->loadMultiple() as $domain) {
    $this
      ->drupalGet($domain
      ->getPath());
    $this
      ->assertRaw($domain
      ->label(), 'Loaded the proper domain.');
    $this
      ->assertRaw('<th>Token</th>', 'Token values printed.');
    foreach ($this
      ->tokenList() as $token => $callback) {
      $this
        ->assertRaw("<td>{$token}</td>", "{$token} found correctly.");

      // The URL token is sensitive to the path, which is /user, but that
      // does not come across when making the callback outside of a request
      // context.
      $value = $domain
        ->{$callback}();
      if ($token == '[domain:url]') {
        $value = str_replace('user', '', $value);
        if (substr($value, -1) != '/') {
          $value .= '/';
        }
      }
      $this
        ->assertRaw('<td>' . $value . '</td>', 'Value set correctly to ' . $value);
    }
  }
}