Browse Source

Fix reason phrase not getting set by statusCode()

Setting a statuscode with the mutable interface should set the reason
phrase.
Mark Story 9 years ago
parent
commit
ea7c52b91f
2 changed files with 19 additions and 5 deletions
  1. 5 3
      src/Http/Response.php
  2. 14 2
      tests/TestCase/Network/ResponseTest.php

+ 5 - 3
src/Http/Response.php

@@ -402,9 +402,9 @@ class Response implements ResponseInterface
     /**
      * Reason Phrase
      *
-     * @var string|null
+     * @var string
      */
-    protected $_reasonPhrase = null;
+    protected $_reasonPhrase = 'OK';
 
     /**
      * Stream mode options.
@@ -877,7 +877,9 @@ class Response implements ResponseInterface
         if (!isset($this->_statusCodes[$code])) {
             throw new InvalidArgumentException('Unknown status code');
         }
-
+        if (isset($this->_statusCodes[$code])) {
+            $this->_reasonPhrase = $this->_statusCodes[$code];
+        }
         $this->_status = $code;
         $this->_setContentType();
 

+ 14 - 2
tests/TestCase/Network/ResponseTest.php

@@ -130,18 +130,30 @@ class ResponseTest extends TestCase
     /**
      * Tests the statusCode method
      *
-     * @expectedException \InvalidArgumentException
      * @return void
      */
     public function testStatusCode()
     {
         $response = new Response();
         $this->assertEquals(200, $response->statusCode());
+
         $response->statusCode(404);
+        $this->assertEquals(404, $response->getStatusCode(), 'Sets shared state.');
         $this->assertEquals(404, $response->statusCode());
+        $this->assertEquals('Not Found', $response->getReasonPhrase());
+
         $this->assertEquals(500, $response->statusCode(500));
+    }
 
-        //Throws exception
+    /**
+     * Test invalid status codes
+     *
+     * @expectedException \InvalidArgumentException
+     * @return void
+     */
+    public function testStatusCodeInvalid()
+    {
+        $response = new Response();
         $response->statusCode(1001);
     }