Allow passing attributes into ServerRequest::getServerRequest

Remove other methods relating to the server request.
This commit is contained in:
PJ Dietz 2015-03-24 20:29:14 -04:00
parent 7cb6304037
commit 51e1be92fd
2 changed files with 55 additions and 119 deletions

View File

@ -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() public function __clone()
{ {
if (is_object($this->parsedBody)) { if (is_object($this->parsedBody)) {
@ -311,22 +301,10 @@ class ServerRequest extends Request implements ServerRequestInterface
* @return self * @return self
* @static * @static
*/ */
public static function getServerRequest() public static function getServerRequest(array $attributes = null)
{
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)
{ {
$request = new self();
$request->attributes = $attributes ?: [];
$request->serverParams = $_SERVER; $request->serverParams = $_SERVER;
$request->cookieParams = $_COOKIE; $request->cookieParams = $_COOKIE;
$request->fileParams = $_FILES; $request->fileParams = $_FILES;
@ -342,6 +320,7 @@ class ServerRequest extends Request implements ServerRequestInterface
if ($contentType === "application/x-www-form-urlencoded" || $contentType === "multipart/form-data") { if ($contentType === "application/x-www-form-urlencoded" || $contentType === "multipart/form-data") {
$request->parsedBody = $_POST; $request->parsedBody = $_POST;
} }
return $request;
} }
/** /**

View File

@ -19,7 +19,6 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
/** /**
* @covers WellRESTed\Message\ServerRequest::getServerRequest * @covers WellRESTed\Message\ServerRequest::getServerRequest
* @covers WellRESTed\Message\ServerRequest::updateWithServerRequest
* @covers WellRESTed\Message\ServerRequest::getServerRequestHeaders * @covers WellRESTed\Message\ServerRequest::getServerRequestHeaders
* @uses WellRESTed\Message\ServerRequest::__construct * @uses WellRESTed\Message\ServerRequest::__construct
* @uses WellRESTed\Message\ServerRequest::__clone * @uses WellRESTed\Message\ServerRequest::__clone
@ -33,6 +32,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
$_SERVER = [ $_SERVER = [
"HTTP_HOST" => "localhost", "HTTP_HOST" => "localhost",
"HTTP_ACCEPT" => "application/json", "HTTP_ACCEPT" => "application/json",
"HTTP_CONTENT_TYPE" => "application/x-www-form-urlencoded",
"QUERY_STRING" => "guinea_pig=Claude&hamster=Fizzgig" "QUERY_STRING" => "guinea_pig=Claude&hamster=Fizzgig"
]; ];
$_COOKIE = [ $_COOKIE = [
@ -47,50 +47,17 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
"size" => 98174 "size" => 98174
] ]
]; ];
$request = ServerRequest::getServerRequest(); $_POST = [
$this->assertNotNull($request); "dog" => "Bear"
}
/**
* @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"
]; ];
$_COOKIE = [ $request = ServerRequest::getServerRequest(["guinea_pig" => "Claude"]);
"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();
$this->assertNotNull($request); $this->assertNotNull($request);
return $request; return $request;
} }
/** /**
* @covers WellRESTed\Message\ServerRequest::getServerParams * @covers WellRESTed\Message\ServerRequest::getServerParams
* @preserveGlobalState disabled * @depends testGetServerRequestReadsFromRequest
* @depends testWithServerRequestReadsFromRequest
*/ */
public function testServerRequestProvidesServerParams($request) public function testServerRequestProvidesServerParams($request)
{ {
@ -100,8 +67,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
/** /**
* @covers WellRESTed\Message\ServerRequest::getCookieParams * @covers WellRESTed\Message\ServerRequest::getCookieParams
* @preserveGlobalState disabled * @depends testGetServerRequestReadsFromRequest
* @depends testWithServerRequestReadsFromRequest
*/ */
public function testServerRequestProvidesCookieParams($request) public function testServerRequestProvidesCookieParams($request)
{ {
@ -111,8 +77,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
/** /**
* @covers WellRESTed\Message\ServerRequest::getQueryParams * @covers WellRESTed\Message\ServerRequest::getQueryParams
* @preserveGlobalState disabled * @depends testGetServerRequestReadsFromRequest
* @depends testWithServerRequestReadsFromRequest
*/ */
public function testServerRequestProvidesQueryParams($request) public function testServerRequestProvidesQueryParams($request)
{ {
@ -122,8 +87,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
/** /**
* @covers WellRESTed\Message\ServerRequest::getFileParams * @covers WellRESTed\Message\ServerRequest::getFileParams
* @preserveGlobalState disabled * @depends testGetServerRequestReadsFromRequest
* @depends testWithServerRequestReadsFromRequest
*/ */
public function testServerRequestProvidesFilesParams($request) 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\Request
* @uses WellRESTed\Message\Message * @uses WellRESTed\Message\Message
* @uses WellRESTed\Message\HeaderCollection * @uses WellRESTed\Message\HeaderCollection
* @preserveGlobalState disabled * @depends testGetServerRequestReadsFromRequest
* @depends testWithServerRequestReadsFromRequest
*/ */
public function testServerRequestProvidesHeaders($request) public function testServerRequestProvidesHeaders($request)
{ {
@ -145,14 +108,26 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
$this->assertEquals("application/json", $request->getHeader("Accept")); $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 * @covers WellRESTed\Message\ServerRequest::withCookieParams
* @uses WellRESTed\Message\ServerRequest::getCookieParams * @uses WellRESTed\Message\ServerRequest::getCookieParams
* @uses WellRESTed\Message\ServerRequest::__clone * @uses WellRESTed\Message\ServerRequest::__clone
* @uses WellRESTed\Message\Request * @uses WellRESTed\Message\Request
* @uses WellRESTed\Message\Message * @uses WellRESTed\Message\Message
* @preserveGlobalState disabled * @depends testGetServerRequestReadsFromRequest
* @depends testWithServerRequestReadsFromRequest
*/ */
public function testWithCookieParamsCreatesNewInstance($request1) public function testWithCookieParamsCreatesNewInstance($request1)
{ {
@ -170,8 +145,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
* @uses WellRESTed\Message\ServerRequest::__clone * @uses WellRESTed\Message\ServerRequest::__clone
* @uses WellRESTed\Message\Request * @uses WellRESTed\Message\Request
* @uses WellRESTed\Message\Message * @uses WellRESTed\Message\Message
* @preserveGlobalState disabled * @depends testGetServerRequestReadsFromRequest
* @depends testWithServerRequestReadsFromRequest
*/ */
public function testWithQueryParamsCreatesNewInstance($request1) 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::getParsedBody
* @covers WellRESTed\Message\ServerRequest::updateWithServerRequest
* @uses WellRESTed\Message\ServerRequest::__construct * @uses WellRESTed\Message\ServerRequest::__construct
* @uses WellRESTed\Message\ServerRequest::__clone * @uses WellRESTed\Message\ServerRequest::__clone
* @uses WellRESTed\Message\ServerRequest::withServerRequest
* @uses WellRESTed\Message\ServerRequest::updateWithServerRequest
* @uses WellRESTed\Message\ServerRequest::getServerRequestHeaders * @uses WellRESTed\Message\ServerRequest::getServerRequestHeaders
* @uses WellRESTed\Message\Request * @uses WellRESTed\Message\Request
* @uses WellRESTed\Message\Message * @uses WellRESTed\Message\Message
@ -197,7 +192,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
* @preserveGlobalState disabled * @preserveGlobalState disabled
* @dataProvider formContentTypeProvider * @dataProvider formContentTypeProvider
*/ */
public function testGetParsedBodyReturnsFormFieldsForUrlencodedForm($contentType) public function testGetServerRequestParsesFormBody($contentType)
{ {
$_SERVER = [ $_SERVER = [
"HTTP_HOST" => "localhost", "HTTP_HOST" => "localhost",
@ -208,8 +203,7 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
$_POST = [ $_POST = [
"dog" => "Bear" "dog" => "Bear"
]; ];
$request = new ServerRequest(); $request = ServerRequest::getServerRequest();
$request = $request->withServerRequest();
$this->assertEquals("Bear", $request->getParsedBody()["dog"]); $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 * @covers WellRESTed\Message\ServerRequest::__clone
* @uses WellRESTed\Message\ServerRequest::__construct * @uses WellRESTed\Message\ServerRequest::__construct