public function DomainAliasEnvironmentTest::testDomainAliasEnvironments in Domain Access 8
Test for environment matching.
File
- domain_alias/
tests/ src/ Functional/ DomainAliasEnvironmentTest.php, line 35
Class
- DomainAliasEnvironmentTest
- Tests behavior for the domain alias environment handler.
Namespace
Drupal\Tests\domain_alias\FunctionalCode
public function testDomainAliasEnvironments() {
$domain_storage = \Drupal::entityTypeManager()
->getStorage('domain');
$alias_loader = \Drupal::entityTypeManager()
->getStorage('domain_alias');
$domains = $domain_storage
->loadMultipleSorted(NULL, TRUE);
// Our patterns should map to example.com, one.example.com, two.example.com.
$patterns = [
'*.' . $this->baseHostname,
'four.' . $this->baseHostname,
'five.' . $this->baseHostname,
];
foreach ($domains as $domain) {
$values = [
'domain_id' => $domain
->id(),
'pattern' => array_shift($patterns),
'redirect' => 0,
'environment' => 'local',
];
$this
->createDomainAlias($values);
}
// Test the environment loader.
$local = $alias_loader
->loadByEnvironment('local');
$this
->assert(count($local) == 3, 'Three aliases set to local');
// Test the environment matcher. $domain here is two.example.com.
$match = $alias_loader
->loadByEnvironmentMatch($domain, 'local');
$this
->assert(count($match) == 1, 'One environment match loaded');
$alias = current($match);
$this
->assert($alias
->getPattern() == 'five.' . $this->baseHostname, 'Proper pattern match loaded.');
// Set one alias to a different environment.
$alias
->set('environment', 'testing')
->save();
$local = $alias_loader
->loadByEnvironment('local');
$this
->assert(count($local) == 2, 'Two aliases set to local');
// Test the environment matcher. $domain here is two.example.com.
$matches = $alias_loader
->loadByEnvironmentMatch($domain, 'local');
$this
->assert(count($matches) == 0, 'No environment matches loaded');
// Test the environment matcher. $domain here is one.example.com.
$domain = $domain_storage
->load('one_example_com');
$matches = $alias_loader
->loadByEnvironmentMatch($domain, 'local');
$this
->assert(count($matches) == 1, 'One environment match loaded');
$alias = current($matches);
$this
->assert($alias
->getPattern() == 'four.' . $this->baseHostname, 'Proper pattern match loaded.');
// Now load a page and check things.
// Since we cannot read the service request, we place a block
// which shows links to all domains.
$this
->drupalPlaceBlock('domain_switcher_block');
// To get around block access, let the anon user view the block.
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, [
'administer domains',
]);
// For a non-aliased request, the url list should be normal.
$this
->drupalGet($domain
->getPath());
foreach ($domains as $domain) {
$this
->assertSession()
->assertEscaped($domain
->getHostname());
$this
->assertSession()
->linkByHrefExists($domain
->getPath(), 0, 'Link found: ' . $domain
->getPath());
}
// For an aliased request (four.example.com), the list should be aliased.
$url = $domain
->getScheme() . $alias
->getPattern();
$this
->drupalGet($url);
foreach ($matches as $match) {
$this
->assertSession()
->assertEscaped($match
->getPattern());
}
}