Browse Source

Fix Uri query string not getting set.

When the `url` option is used, the query string if present should be set
into the Uri instance. This makes it match up with the `query` property.
Mark Story 9 years ago
parent
commit
b07eb6837a
2 changed files with 4 additions and 0 deletions
  1. 3 0
      src/Http/ServerRequest.php
  2. 1 0
      tests/TestCase/Network/RequestTest.php

+ 3 - 0
src/Http/ServerRequest.php

@@ -314,6 +314,9 @@ class ServerRequest implements ArrayAccess, ServerRequestInterface
         if ($config['url']) {
             $uri = $uri->withPath('/' . $config['url']);
         }
+        if (strlen($querystr)) {
+            $uri = $uri->withQuery($querystr);
+        }
 
         $this->uri = $uri;
         $this->base = $config['base'];

+ 1 - 0
tests/TestCase/Network/RequestTest.php

@@ -172,6 +172,7 @@ class RequestTest extends TestCase
         $expected = ['one' => 'something', 'two' => 'else'];
         $this->assertEquals($expected, $request->query);
         $this->assertEquals('some/path', $request->url);
+        $this->assertEquals('one=something&two=else', $request->getUri()->getQuery());
     }
 
     /**