Skip to content

Commit

Permalink
add non-standard port to HTTP_HOST
Browse files Browse the repository at this point in the history
  • Loading branch information
kbond authored and fabpot committed Jan 24, 2014
1 parent d99507b commit 247604c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/Symfony/Component/BrowserKit/Client.php
Expand Up @@ -302,12 +302,18 @@ public function request($method, $uri, array $parameters = array(), array $files
}

$uri = $this->getAbsoluteUri($uri);

$server = array_merge($this->server, $server);

if (!$this->history->isEmpty()) {
$server['HTTP_REFERER'] = $this->history->current()->getUri();
}

$server['HTTP_HOST'] = parse_url($uri, PHP_URL_HOST);

if ($port = parse_url($uri, PHP_URL_PORT)) {
$server['HTTP_HOST'] .= ':'.$port;
}

$server['HTTPS'] = 'https' == parse_url($uri, PHP_URL_SCHEME);

$this->internalRequest = new Request($uri, $method, $parameters, $files, $this->cookieJar->allValues($uri), $server, $content);
Expand Down
23 changes: 23 additions & 0 deletions src/Symfony/Component/BrowserKit/Tests/ClientTest.php
Expand Up @@ -160,6 +160,11 @@ public function testRequestHttpHeaders()
$client->request('GET', 'https://www.example.com');
$headers = $client->getRequest()->getServer();
$this->assertTrue($headers['HTTPS'], '->request() sets the HTTPS header');

$client = new TestClient();
$client->request('GET', 'http://www.example.com:8080');
$headers = $client->getRequest()->getServer();
$this->assertEquals('www.example.com:8080', $headers['HTTP_HOST'], '->request() sets the HTTP_HOST header with port');
}

public function testRequestURIConversion()
Expand Down Expand Up @@ -448,6 +453,24 @@ public function testFollowRedirectWithHeaders()
$this->assertEquals($headers, $client->getRequest()->getServer());
}

public function testFollowRedirectWithPort()
{
$headers = array(
'HTTP_HOST' => 'www.example.com:8080',
'HTTP_USER_AGENT' => 'Symfony2 BrowserKit',
'HTTPS' => false
);

$client = new TestClient();
$client->followRedirects(false);
$client->setNextResponse(new Response('', 302, array(
'Location' => 'http://www.example.com:8080/redirected',
)));
$client->request('GET', 'http://www.example.com:8080/');

$this->assertEquals($headers, $client->getRequest()->getServer());
}

public function testBack()
{
$client = new TestClient();
Expand Down

0 comments on commit 247604c

Please sign in to comment.