public function Domain301RedirectTest::testDomainRedirect in Domain 301 Redirect 8
Test redirecting to various domains.
File
- tests/src/ Functional/ Domain301RedirectTest.php, line 57 
Class
- Domain301RedirectTest
- Test the redirection of a domain using the DomainRedirectEventSubscriber.
Namespace
Drupal\Tests\domain_301_redirect\FunctionalCode
public function testDomainRedirect() {
  list($statusCode, $headers) = $this
    ->getRedirect($this->domain);
  $this
    ->assertNotEquals(301, $statusCode, 'No redirect is performed.');
  // Set a redirect domain.
  $this
    ->enableRedirect($this->redirectDomain);
  list($statusCode, $headers) = $this
    ->getRedirect($this->domain);
  $this
    ->assertEquals(301, $statusCode, 'Domain redirect is performed.');
  $location = $headers['Location'][0] ?? NULL;
  $this
    ->assertEquals($this->redirectDomain, $location, 'Domain redirect url is correct.');
  // A 404 request should still redirect.
  list($statusCode, $headers) = $this
    ->getRedirect($this->domain . 'not-found');
  $this
    ->assertEquals(301, $statusCode, 'Domain redirect is performed for 404 urls.');
  $location = $headers['Location'][0] ?? NULL;
  $this
    ->assertEquals($this->redirectDomain . 'not-found', $location, 'Domain redirect url is correct for 404 urls.');
  // A 403 request should still redirect.
  list($statusCode, $headers) = $this
    ->getRedirect($this->domain . 'admin/config');
  $this
    ->assertEquals(301, $statusCode, 'Domain redirect is performed for 403 urls.');
  $location = $headers['Location'][0] ?? NULL;
  $this
    ->assertEquals($this->redirectDomain . 'admin/config', $location, 'Domain redirect url is correct for 403 urls.');
  // An http request should redirect when we're redirecting to https.
  $this
    ->enableRedirect($this->secureDomain);
  list($statusCode, $headers) = $this
    ->getRedirect($this->domain);
  $this
    ->assertEquals(301, $statusCode, 'Domain redirect is performed on an https domain.');
  $location = $headers['Location'][0] ?? NULL;
  $this
    ->assertEquals($this->secureDomain, $location, 'Domain redirect url is correct on an https domain.');
  $this
    ->disableRedirect();
  list($statusCode, $headers) = $this
    ->getRedirect($this->domain);
  $this
    ->assertNotEquals(301, $statusCode, 'The site is no longer redirecting.');
}