ServerRequest provides proper defaults and throws exception for bad parsed body

This commit is contained in:
PJ Dietz 2015-04-26 20:08:13 -04:00
parent 534bd43d9b
commit dce4bdf572
2 changed files with 84 additions and 4 deletions

View File

@ -11,14 +11,14 @@ class ServerRequest extends Request implements ServerRequestInterface
private $attributes;
/** @var array */
private $cookieParams;
/** @var array */
private $uploadedFiles;
/** @var mixed */
private $parsedBody;
/** @var array */
private $queryParams;
/** @var array */
private $serverParams;
/** @var mixed */
private $parsedBody;
/** @var array */
private $uploadedFiles;
// ------------------------------------------------------------------------
@ -26,6 +26,9 @@ class ServerRequest extends Request implements ServerRequestInterface
{
parent::__construct();
$this->attributes = [];
$this->cookieParams = [];
$this->queryParams = [];
$this->serverParams = [];
$this->uploadedFiles = [];
}
@ -224,6 +227,10 @@ class ServerRequest extends Request implements ServerRequestInterface
*/
public function withParsedBody($data)
{
if (!(is_null($data) || is_array($data) || is_object($data))) {
throw new \InvalidArgumentException("Parsed body must be null, array, or object.");
}
$request = clone $this;
$request->parsedBody = $data;
return $request;

View File

@ -161,6 +161,15 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
// ------------------------------------------------------------------------
// Server Params
/**
* @covers WellRESTed\Message\ServerRequest::getServerParams
*/
public function testServerParamsIsEmptyByDefault()
{
$request = new ServerRequest();
$this->assertEquals([], $request->getServerParams());
}
/**
* @covers WellRESTed\Message\ServerRequest::getServerParams
* @depends testGetServerRequestReadsFromRequest
@ -174,6 +183,15 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
// ------------------------------------------------------------------------
// Cookies
/**
* @covers WellRESTed\Message\ServerRequest::getCookieParams
*/
public function testCookieParamsIsEmptyByDefault()
{
$request = new ServerRequest();
$this->assertEquals([], $request->getCookieParams());
}
/**
* @covers WellRESTed\Message\ServerRequest::getCookieParams
* @depends testGetServerRequestReadsFromRequest
@ -201,6 +219,15 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
// ------------------------------------------------------------------------
// Query
/**
* @covers WellRESTed\Message\ServerRequest::getQueryParams
*/
public function testQueryParamsIsEmptyByDefault()
{
$request = new ServerRequest();
$this->assertEquals([], $request->getQueryParams());
}
/**
* @covers WellRESTed\Message\ServerRequest::getQueryParams
* @depends testGetServerRequestReadsFromRequest
@ -228,6 +255,15 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
// ------------------------------------------------------------------------
// Uploaded Files
/**
* @covers WellRESTed\Message\ServerRequest::getUploadedFiles
*/
public function testUploadedFilesIsEmptyByDefault()
{
$request = new ServerRequest();
$this->assertEquals([], $request->getUploadedFiles());
}
/**
* @covers WellRESTed\Message\ServerRequest::getUploadedFiles
* @preserveGlobalState disabled
@ -384,6 +420,15 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
// ------------------------------------------------------------------------
// Parsed Body
/**
* @covers WellRESTed\Message\ServerRequest::getParsedBody
*/
public function testParsedBodyIsNullByDefault()
{
$request = new ServerRequest();
$this->assertNull($request->getParsedBody());
}
/**
* @covers WellRESTed\Message\ServerRequest::getServerRequest
* @covers WellRESTed\Message\ServerRequest::getParsedBody
@ -431,6 +476,25 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
$this->assertEquals("Clyde", $body2["guinea_pig"]);
}
/**
* @covers WellRESTed\Message\ServerRequest::withParsedBody
* @expectedException \InvalidArgumentException
* @dataProvider invalidParsedBodyProvider
*/
public function testWithParsedBodyThrowsExceptionWithInvalidType($body)
{
$request = new ServerRequest();
$request->withParsedBody($body);
}
public function invalidParsedBodyProvider()
{
return [
[false],
[1]
];
}
/**
* @covers WellRESTed\Message\ServerRequest::__clone
*/
@ -450,6 +514,15 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
// ------------------------------------------------------------------------
// Attributes
/**
* @covers WellRESTed\Message\ServerRequest::getAttributes
*/
public function testAttributesIsEmptyByDefault()
{
$request = new ServerRequest();
$this->assertEquals([], $request->getAttributes());
}
/**
* @covers WellRESTed\Message\ServerRequest::getAttribute
* @depends testGetServerRequestReadsFromRequest