Skip to content

Commit 5c71de9

Browse files
committed
matchHost() should only care about hosts
When `ignoreHostname` is set to true, any hostname comparison should always return true. When it's disabled, it should compare hostnames and hostnames only. Co-authored-by: Jan Vernieuwe <[email protected]> Closes #7
1 parent d99de47 commit 5c71de9

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

src/RelaxedRequestMatcher.php

+4-6
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,11 @@ public static function matchQueryString(Request $first, Request $second)
4545

4646
public static function matchHost(Request $first, Request $second)
4747
{
48-
$firstURL = parse_url($first->getUrl());
49-
$secondURL = parse_url($second->getUrl());
50-
51-
unset($firstURL['host']);
52-
unset($secondURL['host']);
48+
if (Config::ignoreReqHostname()) {
49+
return true;
50+
}
5351

54-
return $firstURL === $secondURL;
52+
return $first->getHost() === $second->getHost();
5553
}
5654

5755
public static function matchHeaders(Request $first, Request $second)

tests/VCR/RelaxedRequestMatcherTest.php

+18-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
class RelaxedRequestMatcherTest extends \PHPUnit_Framework_TestCase
1818
{
19-
public function testRelaxedRequestMatcherQueryHost()
19+
public function testRelaxedRequestMatcherQueryHostEnabled()
2020
{
2121
$actualRequest = new Request('GET', 'http://example.com/api/v1?query=users');
2222
$cleanRequest = new Request('GET', 'http://[]/api/v1?query=users');
@@ -27,10 +27,27 @@ public function testRelaxedRequestMatcherQueryHost()
2727
),
2828
));
2929

30+
$this->assertEquals('[]', $cleanRequest->getHost());
3031
$this->assertFalse(RequestMatcher::matchHost($actualRequest, $cleanRequest));
3132
$this->assertTrue(RelaxedRequestMatcher::matchHost($actualRequest, $cleanRequest));
3233
}
3334

35+
public function testRelaxedRequestMatcherQueryHostDisabled()
36+
{
37+
$actualRequest = new Request('GET', 'http://example.com/api/v1?query=users');
38+
$cleanRequest = new Request('GET', 'http://[]/api/v1?query=users');
39+
40+
Config::configureOptions(array(
41+
'request' => array(
42+
'ignoreHostname' => false,
43+
),
44+
));
45+
46+
$this->assertEquals('[]', $cleanRequest->getHost());
47+
$this->assertFalse(RequestMatcher::matchHost($actualRequest, $cleanRequest));
48+
$this->assertFalse(RelaxedRequestMatcher::matchHost($actualRequest, $cleanRequest));
49+
}
50+
3451
public function testRelaxedRequestMatcherQueryString()
3552
{
3653
$actualRequest = new Request('GET', 'http://example.com/api/v1?query=users&apiKey=SomethingSensitive');

0 commit comments

Comments
 (0)