public function DomainInactiveTest::testInactiveDomain in Domain Access 8
Test inactive domain.
File
- domain/
tests/ src/ Functional/ DomainInactiveTest.php, line 25
Class
- DomainInactiveTest
- Tests the access rules and redirects for inactive domains.
Namespace
Drupal\Tests\domain\FunctionalCode
public function testInactiveDomain() {
// Configure 'node' as front page, else the test loads the login form.
$site_config = $this
->config('system.site');
$site_config
->set('page.front', '/node')
->save();
// Create four new domains programmatically.
$this
->domainCreateTestDomains(4);
$domains = \Drupal::entityTypeManager()
->getStorage('domain')
->loadMultiple();
// Grab a known domain for testing.
$domain = $domains['two_example_com'];
$this
->drupalGet($domain
->getPath());
$this
->assertTrue($domain
->status(), 'Tested domain is set to active.');
$this
->assertTrue($domain
->getPath() == $this
->getUrl(), 'Loaded the active domain.');
// Disable the domain and test for redirect.
$domain
->disable();
$default = \Drupal::entityTypeManager()
->getStorage('domain')
->loadDefaultDomain();
// Our postSave() cache tag clear should allow this to work properly.
$this
->drupalGet($domain
->getPath());
$this
->assertFalse($domain
->status(), 'Tested domain is set to inactive.');
$this
->assertTrue($default
->getPath() == $this
->getUrl(), 'Redirected an inactive domain to the default domain.');
// Check to see if the user can login.
$url = $domain
->getPath() . 'user/login';
$this
->drupalGet($url);
$this
->assertResponse(200, 'Request to login on inactive domain allowed.');
// Check to see if the user can reset password.
$url = $domain
->getPath() . 'user/password';
$this
->drupalGet($url);
$this
->assertResponse(200, 'Request to reset password on inactive domain allowed.');
// Try to access with the proper permission.
user_role_grant_permissions(AccountInterface::ANONYMOUS_ROLE, [
'access inactive domains',
]);
// Must flush cache because we did not resave the domain.
drupal_flush_all_caches();
$this
->assertFalse($domain
->status(), 'Tested domain is set to inactive.');
$this
->drupalGet($domain
->getPath());
// Set up two additional domains.
$domain2 = $domains['one_example_com'];
$domain3 = $domains['three_example_com'];
// Check against trusted host patterns.
$settings['settings']['trusted_host_patterns'] = (object) [
'value' => [
'^' . $this
->prepareTrustedHostname($domain
->getHostname()) . '$',
'^' . $this
->prepareTrustedHostname($domain2
->getHostname()) . '$',
],
'required' => TRUE,
];
$this
->writeSettings($settings);
// Revoke the permission change.
user_role_revoke_permissions(RoleInterface::ANONYMOUS_ID, [
'access inactive domains',
]);
$domain2
->saveDefault();
// Test the trusted host, which should redirect to default.
$this
->drupalGet($domain
->getPath());
$this
->assertTrue($domain2
->getPath() == $this
->getUrl(), 'Redirected from the inactive domain.');
$this
->assertResponse(200, 'Request to trusted host allowed.');
// The redirect is cached, so we must flush cache to test again.
drupal_flush_all_caches();
// Test another inactive domain that is not trusted.
// Disable the domain and test for redirect.
$domain3
->saveDefault();
$this
->drupalGet($domain
->getPath());
$this
->assertRaw('The provided host name is not a valid redirect.');
}