From e1355001abaa69dcc7dbc0949b6113cb25b50baf Mon Sep 17 00:00:00 2001
From: Thomas Flori <thflori@gmail.com>
Date: Wed, 8 Aug 2018 07:05:56 +0200
Subject: [PATCH] test path functions

---
 src/ServerRequest.php       |  2 +-
 tests/ServerRequestTest.php | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/src/ServerRequest.php b/src/ServerRequest.php
index 404655c..7115682 100644
--- a/src/ServerRequest.php
+++ b/src/ServerRequest.php
@@ -413,6 +413,6 @@ class ServerRequest extends Request implements ServerRequestInterface
      */
     public function getBase(): string
     {
-        return dirname($this->getServerParams()['SCRIPT_NAME']);
+        return dirname($this->getServerParams()['SCRIPT_NAME'] ?? '/index.php');
     }
 }
diff --git a/tests/ServerRequestTest.php b/tests/ServerRequestTest.php
index 9e30186..3a8b322 100644
--- a/tests/ServerRequestTest.php
+++ b/tests/ServerRequestTest.php
@@ -453,6 +453,14 @@ class ServerRequestTest extends TestCase
         $this->assertSame($params, $request2->getCookieParams());
     }
 
+    public function testGetCookie()
+    {
+        $request = (new ServerRequest('GET', '/'))->withCookieParams(['name' => 'value']);
+
+        $this->assertTrue($request->hasCookie('name'));
+        $this->assertSame('value', $request->getCookie('name'));
+    }
+
     public function testQueryParams()
     {
         $request1 = new ServerRequest('GET', '/');
@@ -519,4 +527,25 @@ class ServerRequestTest extends TestCase
         $this->assertSame([], $requestWithoutAttribute->getAttributes());
         $this->assertSame('different-default', $requestWithoutAttribute->getAttribute('name', 'different-default'));
     }
+
+    public function testGetBaseWithoutScriptName()
+    {
+        $request = new ServerRequest('GET', '/');
+
+        $this->assertSame('/', $request->getBase());
+    }
+
+    public function testGetBaseWithScriptName()
+    {
+        $request = new ServerRequest('GET', '/shop/product/42', [], null, '1.1', ['SCRIPT_NAME' => '/shop/index.php']);
+
+        self::assertSame('/shop', $request->getBase());
+    }
+
+    public function testGetRelativePath()
+    {
+        $request = new ServerRequest('GET', '/shop/product/42', [], null, '1.1', ['SCRIPT_NAME' => '/shop/index.php']);
+
+        self::assertSame('/product/42', $request->getRelativePath());
+    }
 }
-- 
GitLab