Assign $_POST to parsedBody on creation if form content header is set.
This commit is contained in:
parent
fcbdd1ebfb
commit
166fc66117
|
|
@ -164,12 +164,6 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||||
*/
|
*/
|
||||||
public function getParsedBody()
|
public function getParsedBody()
|
||||||
{
|
{
|
||||||
if (!isset($this->parsedBody)) {
|
|
||||||
$contentType = $this->getHeader("Content-type");
|
|
||||||
if ($contentType === "application/x-www-form-urlencoded" || $contentType === "multipart/form-data") {
|
|
||||||
$this->parsedBody = $_POST;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $this->parsedBody;
|
return $this->parsedBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -326,6 +320,10 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||||
return self::$serverRequest;
|
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)
|
private function updateWithServerRequest(&$request)
|
||||||
{
|
{
|
||||||
$request->serverParams = $_SERVER;
|
$request->serverParams = $_SERVER;
|
||||||
|
|
@ -339,6 +337,10 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||||
foreach ($headers as $key => $value) {
|
foreach ($headers as $key => $value) {
|
||||||
$request->headers[$key] = $value;
|
$request->headers[$key] = $value;
|
||||||
}
|
}
|
||||||
|
$contentType = $request->getHeader("Content-type");
|
||||||
|
if ($contentType === "application/x-www-form-urlencoded" || $contentType === "multipart/form-data") {
|
||||||
|
$request->parsedBody = $_POST;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -47,9 +47,6 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
||||||
"size" => 98174
|
"size" => 98174
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
$_POST = [
|
|
||||||
"dog" => "Bear"
|
|
||||||
];
|
|
||||||
$request = ServerRequest::getServerRequest();
|
$request = ServerRequest::getServerRequest();
|
||||||
$this->assertNotNull($request);
|
$this->assertNotNull($request);
|
||||||
}
|
}
|
||||||
|
|
@ -84,9 +81,6 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
||||||
"size" => 98174
|
"size" => 98174
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
$_POST = [
|
|
||||||
"dog" => "Bear"
|
|
||||||
];
|
|
||||||
$request = new ServerRequest();
|
$request = new ServerRequest();
|
||||||
$request = $request->withServerRequest();
|
$request = $request->withServerRequest();
|
||||||
$this->assertNotNull($request);
|
$this->assertNotNull($request);
|
||||||
|
|
@ -191,63 +185,70 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers WellRESTed\Message\ServerRequest::getParsedBody
|
* @covers WellRESTed\Message\ServerRequest::getParsedBody
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::updateWithServerRequest
|
||||||
|
* @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\Request
|
* @uses WellRESTed\Message\Request
|
||||||
* @uses WellRESTed\Message\Message
|
* @uses WellRESTed\Message\Message
|
||||||
* @uses WellRESTed\Message\HeaderCollection
|
* @uses WellRESTed\Message\HeaderCollection
|
||||||
* @preserveGlobalState disabled
|
* @preserveGlobalState disabled
|
||||||
* @depends testWithServerRequestReadsFromRequest
|
* @dataProvider formContentTypeProvider
|
||||||
*/
|
*/
|
||||||
public function testGetParsedBodyReturnsFormFieldsForUrlencodedForm($request)
|
public function testGetParsedBodyReturnsFormFieldsForUrlencodedForm($contentType)
|
||||||
{
|
{
|
||||||
|
$_SERVER = [
|
||||||
|
"HTTP_HOST" => "localhost",
|
||||||
|
"HTTP_CONTENT_TYPE" => $contentType,
|
||||||
|
];
|
||||||
|
$_COOKIE = [];
|
||||||
|
$_FILES = [];
|
||||||
$_POST = [
|
$_POST = [
|
||||||
"dog" => "Bear"
|
"dog" => "Bear"
|
||||||
];
|
];
|
||||||
|
$request = new ServerRequest();
|
||||||
/** @var ServerRequest $request */
|
$request = $request->withServerRequest();
|
||||||
$request = $request->withHeader("Content-type", "application/x-www-form-urlencoded");
|
|
||||||
$this->assertEquals("Bear", $request->getParsedBody()["dog"]);
|
$this->assertEquals("Bear", $request->getParsedBody()["dog"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function formContentTypeProvider()
|
||||||
* @covers WellRESTed\Message\ServerRequest::getParsedBody
|
|
||||||
* @uses WellRESTed\Message\ServerRequest::__clone
|
|
||||||
* @uses WellRESTed\Message\Request
|
|
||||||
* @uses WellRESTed\Message\Message
|
|
||||||
* @uses WellRESTed\Message\HeaderCollection
|
|
||||||
* @preserveGlobalState disabled
|
|
||||||
* @depends testWithServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testGetParsedBodyReturnsFormFieldsForMultipartForm($request)
|
|
||||||
{
|
{
|
||||||
$_POST = [
|
return [
|
||||||
"dog" => "Bear"
|
["application/x-www-form-urlencoded"],
|
||||||
|
["multipart/form-data"]
|
||||||
];
|
];
|
||||||
|
|
||||||
/** @var ServerRequest $request */
|
|
||||||
$request = $request->withHeader("Content-type", "multipart/form-data");
|
|
||||||
$this->assertEquals("Bear", $request->getParsedBody()["dog"]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers WellRESTed\Message\ServerRequest::withParsedBody
|
* @covers WellRESTed\Message\ServerRequest::withParsedBody
|
||||||
* @uses WellRESTed\Message\ServerRequest::getParsedBody
|
* @uses WellRESTed\Message\ServerRequest::getParsedBody
|
||||||
|
* @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\Request
|
* @uses WellRESTed\Message\Request
|
||||||
* @uses WellRESTed\Message\Message
|
* @uses WellRESTed\Message\Message
|
||||||
* @uses WellRESTed\Message\HeaderCollection
|
* @uses WellRESTed\Message\HeaderCollection
|
||||||
* @preserveGlobalState disabled
|
* @preserveGlobalState disabled
|
||||||
* @depends testWithServerRequestReadsFromRequest
|
|
||||||
*/
|
*/
|
||||||
public function testWithParsedBodyCreatesNewInstance($request1)
|
public function testWithParsedBodyCreatesNewInstance()
|
||||||
{
|
{
|
||||||
|
$_SERVER = [
|
||||||
|
"HTTP_HOST" => "localhost",
|
||||||
|
"HTTP_CONTENT_TYPE" => "application/x-www-form-urlencoded",
|
||||||
|
];
|
||||||
|
$_COOKIE = [];
|
||||||
|
$_FILES = [];
|
||||||
$_POST = [
|
$_POST = [
|
||||||
"dog" => "Bear"
|
"dog" => "Bear"
|
||||||
];
|
];
|
||||||
|
$request1 = new ServerRequest();
|
||||||
/** @var ServerRequest $request1 */
|
$request1 = $request1->withServerRequest();
|
||||||
$request1 = $request1->withHeader("Content-type", "application/x-www-form-urlencoded");
|
|
||||||
$body1 = $request1->getParsedBody();
|
$body1 = $request1->getParsedBody();
|
||||||
|
|
||||||
$request2 = $request1->withParsedBody([
|
$request2 = $request1->withParsedBody([
|
||||||
"guinea_pig" => "Clyde"
|
"guinea_pig" => "Clyde"
|
||||||
]);
|
]);
|
||||||
|
|
@ -392,6 +393,4 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
||||||
$this->assertEquals("Molly", $attributes["cat"]);
|
$this->assertEquals("Molly", $attributes["cat"]);
|
||||||
$this->assertEquals("Bear", $attributes["dog"]);
|
$this->assertEquals("Bear", $attributes["dog"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue