From c7ca5c2e094dfbb8ceb2c9105510e0c6cf83b55c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Pustu=C5=82ka?= Date: Thu, 7 Sep 2017 14:34:56 +0200 Subject: [PATCH] Fix adding request cookies for urls without a path. --- src/Http/Cookie/CookieCollection.php | 2 +- tests/TestCase/Http/Cookie/CookieCollectionTest.php | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Http/Cookie/CookieCollection.php b/src/Http/Cookie/CookieCollection.php index a9c017ece69..5b9ee7acd41 100644 --- a/src/Http/Cookie/CookieCollection.php +++ b/src/Http/Cookie/CookieCollection.php @@ -219,7 +219,7 @@ public function addToRequest(RequestInterface $request, array $extraCookies = [] $cookies = $this->findMatchingCookies( $uri->getScheme(), $uri->getHost(), - $uri->getPath() + $uri->getPath() ?: '/' ); $cookies = array_merge($cookies, $extraCookies); $cookiePairs = []; diff --git a/tests/TestCase/Http/Cookie/CookieCollectionTest.php b/tests/TestCase/Http/Cookie/CookieCollectionTest.php index c8db49ec695..e781238af42 100644 --- a/tests/TestCase/Http/Cookie/CookieCollectionTest.php +++ b/tests/TestCase/Http/Cookie/CookieCollectionTest.php @@ -336,24 +336,29 @@ public function testAddToRequest() { $collection = new CookieCollection(); $collection = $collection + ->add(new Cookie('default', '1', null, '/', 'example.com')) ->add(new Cookie('api', 'A', null, '/api', 'example.com')) ->add(new Cookie('blog', 'b', null, '/blog', 'blog.example.com')) ->add(new Cookie('expired', 'ex', new DateTime('-2 seconds'), '/', 'example.com')); $request = new ClientRequest('http://example.com/api'); $request = $collection->addToRequest($request); - $this->assertSame('api=A', $request->getHeaderLine('Cookie')); + $this->assertSame('default=1; api=A', $request->getHeaderLine('Cookie')); $request = new ClientRequest('http://example.com/'); $request = $collection->addToRequest($request); - $this->assertSame('', $request->getHeaderLine('')); + $this->assertSame('default=1', $request->getHeaderLine('Cookie')); + + $request = new ClientRequest('http://example.com'); + $request = $collection->addToRequest($request); + $this->assertSame('default=1', $request->getHeaderLine('Cookie')); $request = new ClientRequest('http://example.com/blog'); $request = $collection->addToRequest($request); - $this->assertSame('', $request->getHeaderLine('Cookie'), 'domain matching should apply'); + $this->assertSame('default=1', $request->getHeaderLine('Cookie'), 'domain matching should apply'); $request = new ClientRequest('http://foo.blog.example.com/blog'); $request = $collection->addToRequest($request); - $this->assertSame('blog=b', $request->getHeaderLine('Cookie')); + $this->assertSame('default=1; blog=b', $request->getHeaderLine('Cookie')); } /**