public function RequestTest::testGetHost

@covers Symfony\Component\HttpFoundation\Request::getHost

File

drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Tests/RequestTest.php, line 558

Class

RequestTest

Namespace

Symfony\Component\HttpFoundation\Tests

Code

public function testGetHost() {
  $request = new Request();
  $request
    ->initialize(array(
    'foo' => 'bar',
  ));
  $this
    ->assertEquals('', $request
    ->getHost(), '->getHost() return empty string if not initialized');
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'HTTP_HOST' => 'www.exemple.com',
  ));
  $this
    ->assertEquals('www.exemple.com', $request
    ->getHost(), '->getHost() from Host Header');

  // Host header with port number.
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'HTTP_HOST' => 'www.exemple.com:8080',
  ));
  $this
    ->assertEquals('www.exemple.com', $request
    ->getHost(), '->getHost() from Host Header with port number');

  // Server values.
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'SERVER_NAME' => 'www.exemple.com',
  ));
  $this
    ->assertEquals('www.exemple.com', $request
    ->getHost(), '->getHost() from server name');
  $this
    ->startTrustingProxyData();

  // X_FORWARDED_HOST.
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'HTTP_X_FORWARDED_HOST' => 'www.exemple.com',
  ));
  $this
    ->assertEquals('www.exemple.com', $request
    ->getHost(), '->getHost() from X_FORWARDED_HOST');

  // X_FORWARDED_HOST
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'HTTP_X_FORWARDED_HOST' => 'www.exemple.com, www.second.com',
  ));
  $this
    ->assertEquals('www.second.com', $request
    ->getHost(), '->getHost() value from X_FORWARDED_HOST use last value');

  // X_FORWARDED_HOST with port number
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'HTTP_X_FORWARDED_HOST' => 'www.exemple.com, www.second.com:8080',
  ));
  $this
    ->assertEquals('www.second.com', $request
    ->getHost(), '->getHost() value from X_FORWARDED_HOST with port number');
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'HTTP_HOST' => 'www.exemple.com',
    'HTTP_X_FORWARDED_HOST' => 'www.forward.com',
  ));
  $this
    ->assertEquals('www.forward.com', $request
    ->getHost(), '->getHost() value from X_FORWARDED_HOST has priority over Host');
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'SERVER_NAME' => 'www.exemple.com',
    'HTTP_X_FORWARDED_HOST' => 'www.forward.com',
  ));
  $this
    ->assertEquals('www.forward.com', $request
    ->getHost(), '->getHost() value from X_FORWARDED_HOST has priority over SERVER_NAME ');
  $request
    ->initialize(array(), array(), array(), array(), array(), array(
    'SERVER_NAME' => 'www.exemple.com',
    'HTTP_HOST' => 'www.host.com',
  ));
  $this
    ->assertEquals('www.host.com', $request
    ->getHost(), '->getHost() value from Host header has priority over SERVER_NAME ');
  $this
    ->stopTrustingProxyData();
}