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()
{
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;
}
/**

View File

@ -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