8000 [BrowserKit] refactor code and fix unquoted regex · symfony/symfony@103fd88 · GitHub
[go: up one dir, main page]

Skip to content

Commit 103fd88

Browse files
committed
[BrowserKit] refactor code and fix unquoted regex
1 parent f401ab9 commit 103fd88

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

src/Symfony/Component/BrowserKit/Client.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,7 @@ public function request($method, $uri, array $parameters = array(), array $files
304304
$uri = $this->getAbsoluteUri($uri);
305305

306306
if (isset($server['HTTP_HOST'])) {
307-
if ($port = parse_url($uri, PHP_URL_PORT)) {
308-
$port = ':'.$port;
309-
}
310-
311-
$uri = preg_replace('{^(https?\://)'.parse_url($uri, PHP_URL_HOST).$port.'}', '${1}'.$server['HTTP_HOST'], $uri);
307+
$uri = preg_replace('{^(https?\://)'.preg_quote($this->extractHost($uri)).'}', '${1}'.$server['HTTP_HOST'], $uri);
312308
}
313309

314310
if (isset($server['HTTPS'])) {
@@ -321,12 +317,7 @@ public function request($method, $uri, array $parameters = array(), array $files
321317
$server['HTTP_REFERER'] = $this->history->current()->getUri();
322318
}
323319

324-
$server['HTTP_HOST'] = parse_url($uri, PHP_URL_HOST);
325-
326-
if ($port = parse_url($uri, PHP_URL_PORT)) {
327-
$server['HTTP_HOST'] .= ':'.$port;
328-
}
329-
320+
$server['HTTP_HOST'] = $this->extractHost($uri);
330321
$server['HTTPS'] = 'https' == parse_url($uri, PHP_URL_SCHEME);
331322

332323
$this->internalRequest = new Request($uri, $method, $parameters, $files, $this->cookieJar->allValues($uri), $server, $content);
@@ -623,4 +614,15 @@ private function updateServerFromUri($server, $uri)
623614

624615
return $server;
625616
}
617+
618+
private function extractHost($uri)
619+
{
620+
$host = parse_url($uri, PHP_URL_HOST);
621+
622+
if ($port = parse_url($uri, PHP_URL_PORT)) {
623+
return $host.':'.$port;
624+
}
625+
626+
return $host;
627+
}
626628
}

src/Symfony/Component/BrowserKit/Tests/ClientTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -214,18 +214,18 @@ public function testRequestURIConversionByServerHost()
214214
{
215215
$client = new TestClient();
216216

217-
$server = array('HTTP_HOST' => 'www.example.com:8000');
217+
$server = array('HTTP_HOST' => 'www.exampl+e.com:8000');
218218
$parameters = array();
219219
$files = array();
220220

221-
$client->request('GET', 'http://example.com', $parameters, $files, $server);
222-
$this->assertEquals('http://www.example.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST to add port');
221+
$client->request('GET', 'http://exampl+e.com', $parameters, $files, $server);
222+
$this->assertEquals('http://www.exampl+e.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST to add port');
223223

224-
$client->request('GET', 'http://example.com:8888', $parameters, $files, $server);
225-
$this->assertEquals('http://www.example.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST to modify existing port');
224+
$client->request('GET', 'http://exampl+e.com:8888', $parameters, $files, $server);
225+
$this->assertEquals('http://www.exampl+e.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST to modify existing port');
226226

227-
$client->request('GET', 'http://example.com:8000', $parameters, $files, $server);
228-
$this->assertEquals('http://www.example.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST respects correct set port');
227+
$client->request('GET', 'http://exampl+e.com:8000', $parameters, $files, $server);
228+
$this->assertEquals('http://www.exampl+e.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST respects correct set port');
229229
}
230230

231231
public function testRequestReferer()

0 commit comments

Comments
 (0)
0