From 51e1be92fdaa92687783f5380a66a999e3fe4087 Mon Sep 17 00:00:00 2001 From: PJ Dietz Date: Tue, 24 Mar 2015 20:29:14 -0400 Subject: [PATCH] Allow passing attributes into ServerRequest::getServerRequest Remove other methods relating to the server request. --- src/Message/ServerRequest.php | 29 +--- test/tests/unit/Message/ServerRequestTest.php | 145 ++++++------------ 2 files changed, 55 insertions(+), 119 deletions(-) diff --git a/src/Message/ServerRequest.php b/src/Message/ServerRequest.php index d25c804..d0d801a 100644 --- a/src/Message/ServerRequest.php +++ b/src/Message/ServerRequest.php @@ -286,16 +286,6 @@ class ServerRequest extends Request implements ServerRequestInterface // ------------------------------------------------------------------------ - /** - * Create a new instance based on the request sent to the server. - */ - public function withServerRequest($options = null) - { - $request = clone $this; - self::updateWithServerRequest($request); - return $request; - } - public function __clone() { if (is_object($this->parsedBody)) { @@ -311,22 +301,10 @@ class ServerRequest extends Request implements ServerRequestInterface * @return self * @static */ - public static function getServerRequest() - { - if (!isset(self::$serverRequest)) { - $request = new self(); - self::updateWithServerRequest($request); - self::$serverRequest = $request; - } - return self::$serverRequest; - } - - /** - * Set the members of the passed request based on the request sent to the server. - * @param self $request - */ - private function updateWithServerRequest(&$request) + public static function getServerRequest(array $attributes = null) { + $request = new self(); + $request->attributes = $attributes ?: []; $request->serverParams = $_SERVER; $request->cookieParams = $_COOKIE; $request->fileParams = $_FILES; @@ -342,6 +320,7 @@ class ServerRequest extends Request implements ServerRequestInterface if ($contentType === "application/x-www-form-urlencoded" || $contentType === "multipart/form-data") { $request->parsedBody = $_POST; } + return $request; } /** diff --git a/test/tests/unit/Message/ServerRequestTest.php b/test/tests/unit/Message/ServerRequestTest.php index 035fe3c..b1cecaf 100644 --- a/test/tests/unit/Message/ServerRequestTest.php +++ b/test/tests/unit/Message/ServerRequestTest.php @@ -19,7 +19,6 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase /** * @covers WellRESTed\Message\ServerRequest::getServerRequest - * @covers WellRESTed\Message\ServerRequest::updateWithServerRequest * @covers WellRESTed\Message\ServerRequest::getServerRequestHeaders * @uses WellRESTed\Message\ServerRequest::__construct * @uses WellRESTed\Message\ServerRequest::__clone @@ -33,6 +32,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase $_SERVER = [ "HTTP_HOST" => "localhost", "HTTP_ACCEPT" => "application/json", + "HTTP_CONTENT_TYPE" => "application/x-www-form-urlencoded", "QUERY_STRING" => "guinea_pig=Claude&hamster=Fizzgig" ]; $_COOKIE = [ @@ -47,50 +47,17 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase "size" => 98174 ] ]; - $request = ServerRequest::getServerRequest(); - $this->assertNotNull($request); - } - - /** - * @covers WellRESTed\Message\ServerRequest::withServerRequest - * @covers WellRESTed\Message\ServerRequest::updateWithServerRequest - * @covers WellRESTed\Message\ServerRequest::getServerRequestHeaders - * @uses WellRESTed\Message\ServerRequest::__construct - * @uses WellRESTed\Message\ServerRequest::__clone - * @uses WellRESTed\Message\Request - * @uses WellRESTed\Message\Message - * @uses WellRESTed\Message\HeaderCollection - * @preserveGlobalState disabled - */ - public function testWithServerRequestReadsFromRequest() - { - $_SERVER = [ - "HTTP_HOST" => "localhost", - "HTTP_ACCEPT" => "application/json", - "QUERY_STRING" => "guinea_pig=Claude&hamster=Fizzgig" + $_POST = [ + "dog" => "Bear" ]; - $_COOKIE = [ - "cat" => "Molly" - ]; - $_FILES = [ - "file" => [ - "name" => "MyFile.jpg", - "type" => "image/jpeg", - "tmp_name" => "/tmp/php/php6hst32", - "error" => "UPLOAD_ERR_OK", - "size" => 98174 - ] - ]; - $request = new ServerRequest(); - $request = $request->withServerRequest(); + $request = ServerRequest::getServerRequest(["guinea_pig" => "Claude"]); $this->assertNotNull($request); return $request; } /** * @covers WellRESTed\Message\ServerRequest::getServerParams - * @preserveGlobalState disabled - * @depends testWithServerRequestReadsFromRequest + * @depends testGetServerRequestReadsFromRequest */ public function testServerRequestProvidesServerParams($request) { @@ -100,8 +67,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase /** * @covers WellRESTed\Message\ServerRequest::getCookieParams - * @preserveGlobalState disabled - * @depends testWithServerRequestReadsFromRequest + * @depends testGetServerRequestReadsFromRequest */ public function testServerRequestProvidesCookieParams($request) { @@ -111,8 +77,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase /** * @covers WellRESTed\Message\ServerRequest::getQueryParams - * @preserveGlobalState disabled - * @depends testWithServerRequestReadsFromRequest + * @depends testGetServerRequestReadsFromRequest */ public function testServerRequestProvidesQueryParams($request) { @@ -122,8 +87,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase /** * @covers WellRESTed\Message\ServerRequest::getFileParams - * @preserveGlobalState disabled - * @depends testWithServerRequestReadsFromRequest + * @depends testGetServerRequestReadsFromRequest */ public function testServerRequestProvidesFilesParams($request) { @@ -132,12 +96,11 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase } /** - * @covers WellRESTed\Message\ServerRequest::getFileParams + * @covers WellRESTed\Message\ServerRequest::getHeader * @uses WellRESTed\Message\Request * @uses WellRESTed\Message\Message * @uses WellRESTed\Message\HeaderCollection - * @preserveGlobalState disabled - * @depends testWithServerRequestReadsFromRequest + * @depends testGetServerRequestReadsFromRequest */ public function testServerRequestProvidesHeaders($request) { @@ -145,14 +108,26 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase $this->assertEquals("application/json", $request->getHeader("Accept")); } + /** + * @covers WellRESTed\Message\ServerRequest::getAttribute + * @uses WellRESTed\Message\Request + * @uses WellRESTed\Message\Message + * @uses WellRESTed\Message\HeaderCollection + * @depends testGetServerRequestReadsFromRequest + */ + public function testServerRequestProvidesAttributesIfPassed($request) + { + /** @var ServerRequest $request */ + $this->assertEquals("Claude", $request->getAttribute("guinea_pig")); + } + /** * @covers WellRESTed\Message\ServerRequest::withCookieParams * @uses WellRESTed\Message\ServerRequest::getCookieParams * @uses WellRESTed\Message\ServerRequest::__clone * @uses WellRESTed\Message\Request * @uses WellRESTed\Message\Message - * @preserveGlobalState disabled - * @depends testWithServerRequestReadsFromRequest + * @depends testGetServerRequestReadsFromRequest */ public function testWithCookieParamsCreatesNewInstance($request1) { @@ -170,8 +145,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase * @uses WellRESTed\Message\ServerRequest::__clone * @uses WellRESTed\Message\Request * @uses WellRESTed\Message\Message - * @preserveGlobalState disabled - * @depends testWithServerRequestReadsFromRequest + * @depends testGetServerRequestReadsFromRequest */ public function testWithQueryParamsCreatesNewInstance($request1) { @@ -184,12 +158,33 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase } /** + * @covers WellRESTed\Message\ServerRequest::withParsedBody + * @uses WellRESTed\Message\ServerRequest::getParsedBody + * @uses WellRESTed\Message\ServerRequest::getQueryParams + * @uses WellRESTed\Message\ServerRequest::__clone + * @uses WellRESTed\Message\Request + * @uses WellRESTed\Message\Message + * @depends testGetServerRequestReadsFromRequest + */ + public function testWithParsedBodyCreatesNewInstance($request1) + { + /** @var ServerRequest $request1 */ + $body1 = $request1->getParsedBody(); + + $request2 = $request1->withParsedBody([ + "guinea_pig" => "Clyde" + ]); + $body2 = $request2->getParsedBody(); + + $this->assertEquals("Bear", $body1["dog"]); + $this->assertEquals("Clyde", $body2["guinea_pig"]); + } + + /** + * @covers WellRESTed\Message\ServerRequest::getServerRequest * @covers WellRESTed\Message\ServerRequest::getParsedBody - * @covers WellRESTed\Message\ServerRequest::updateWithServerRequest * @uses WellRESTed\Message\ServerRequest::__construct * @uses WellRESTed\Message\ServerRequest::__clone - * @uses WellRESTed\Message\ServerRequest::withServerRequest - * @uses WellRESTed\Message\ServerRequest::updateWithServerRequest * @uses WellRESTed\Message\ServerRequest::getServerRequestHeaders * @uses WellRESTed\Message\Request * @uses WellRESTed\Message\Message @@ -197,7 +192,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase * @preserveGlobalState disabled * @dataProvider formContentTypeProvider */ - public function testGetParsedBodyReturnsFormFieldsForUrlencodedForm($contentType) + public function testGetServerRequestParsesFormBody($contentType) { $_SERVER = [ "HTTP_HOST" => "localhost", @@ -208,8 +203,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase $_POST = [ "dog" => "Bear" ]; - $request = new ServerRequest(); - $request = $request->withServerRequest(); + $request = ServerRequest::getServerRequest(); $this->assertEquals("Bear", $request->getParsedBody()["dog"]); } @@ -221,43 +215,6 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase ]; } - /** - * @covers WellRESTed\Message\ServerRequest::withParsedBody - * @uses WellRESTed\Message\ServerRequest::getParsedBody - * @uses WellRESTed\Message\ServerRequest::__construct - * @uses WellRESTed\Message\ServerRequest::__clone - * @uses WellRESTed\Message\ServerRequest::withServerRequest - * @uses WellRESTed\Message\ServerRequest::updateWithServerRequest - * @uses WellRESTed\Message\ServerRequest::getServerRequestHeaders - * @uses WellRESTed\Message\Request - * @uses WellRESTed\Message\Message - * @uses WellRESTed\Message\HeaderCollection - * @preserveGlobalState disabled - */ - public function testWithParsedBodyCreatesNewInstance() - { - $_SERVER = [ - "HTTP_HOST" => "localhost", - "HTTP_CONTENT_TYPE" => "application/x-www-form-urlencoded", - ]; - $_COOKIE = []; - $_FILES = []; - $_POST = [ - "dog" => "Bear" - ]; - $request1 = new ServerRequest(); - $request1 = $request1->withServerRequest(); - $body1 = $request1->getParsedBody(); - - $request2 = $request1->withParsedBody([ - "guinea_pig" => "Clyde" - ]); - $body2 = $request2->getParsedBody(); - - $this->assertEquals("Bear", $body1["dog"]); - $this->assertEquals("Clyde", $body2["guinea_pig"]); - } - /** * @covers WellRESTed\Message\ServerRequest::__clone * @uses WellRESTed\Message\ServerRequest::__construct