Reorganize ServerRequest and test
This commit is contained in:
parent
26d71bd792
commit
a254c69607
|
|
@ -21,12 +21,22 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||||
/** @var mixed */
|
/** @var mixed */
|
||||||
private $parsedBody;
|
private $parsedBody;
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->attributes = [];
|
$this->attributes = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function __clone()
|
||||||
|
{
|
||||||
|
if (is_object($this->parsedBody)) {
|
||||||
|
$this->parsedBody = clone $this->parsedBody;
|
||||||
|
}
|
||||||
|
parent::__clone();
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
// Psr\Http\Message\ServerRequestInterface
|
// Psr\Http\Message\ServerRequestInterface
|
||||||
|
|
||||||
|
|
@ -127,20 +137,36 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the upload file metadata.
|
* Retrieve normalized file upload data.
|
||||||
*
|
*
|
||||||
* This method MUST return file upload metadata in the same structure
|
* This method returns upload metadata in a normalized tree, with each leaf
|
||||||
* as PHP's $_FILES superglobal.
|
* an instance of Psr\Http\Message\UploadedFileInterface.
|
||||||
*
|
*
|
||||||
* These values MUST remain immutable over the course of the incoming
|
* These values MAY be prepared from $_FILES or the message body during
|
||||||
* request. They SHOULD be injected during instantiation, such as from PHP's
|
* instantiation, or MAY be injected via withUploadedFiles().
|
||||||
* $_FILES superglobal, but MAY be derived from other sources.
|
|
||||||
*
|
*
|
||||||
* @return array Upload file(s) metadata, if any.
|
* @return array An array tree of UploadedFileInterface instances; an empty
|
||||||
|
* array MUST be returned if no data is present.
|
||||||
*/
|
*/
|
||||||
public function getFileParams()
|
public function getUploadedFiles()
|
||||||
{
|
{
|
||||||
return $this->fileParams;
|
// TODO: Implement getUploadedFiles() method.
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new instance with the specified uploaded files.
|
||||||
|
*
|
||||||
|
* This method MUST be implemented in such a way as to retain the
|
||||||
|
* immutability of the message, and MUST return an instance that has the
|
||||||
|
* updated body parameters.
|
||||||
|
*
|
||||||
|
* @param array An array tree of UploadedFileInterface instances.
|
||||||
|
* @return self
|
||||||
|
* @throws \InvalidArgumentException if an invalid structure is provided.
|
||||||
|
*/
|
||||||
|
public function withUploadedFiles(array $uploadedFiles)
|
||||||
|
{
|
||||||
|
// TODO: Implement withUploadedFiles() method.
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -281,13 +307,6 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||||
|
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
public function __clone()
|
|
||||||
{
|
|
||||||
if (is_object($this->parsedBody)) {
|
|
||||||
$this->parsedBody = clone $this->parsedBody;
|
|
||||||
}
|
|
||||||
parent::__clone();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function readFromServerRequest(array $attributes = null)
|
protected function readFromServerRequest(array $attributes = null)
|
||||||
{
|
{
|
||||||
|
|
@ -364,36 +383,4 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||||
return $headers;
|
return $headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve normalized file upload data.
|
|
||||||
*
|
|
||||||
* This method returns upload metadata in a normalized tree, with each leaf
|
|
||||||
* an instance of Psr\Http\Message\UploadedFileInterface.
|
|
||||||
*
|
|
||||||
* These values MAY be prepared from $_FILES or the message body during
|
|
||||||
* instantiation, or MAY be injected via withUploadedFiles().
|
|
||||||
*
|
|
||||||
* @return array An array tree of UploadedFileInterface instances; an empty
|
|
||||||
* array MUST be returned if no data is present.
|
|
||||||
*/
|
|
||||||
public function getUploadedFiles()
|
|
||||||
{
|
|
||||||
// TODO: Implement getUploadedFiles() method.
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new instance with the specified uploaded files.
|
|
||||||
*
|
|
||||||
* This method MUST be implemented in such a way as to retain the
|
|
||||||
* immutability of the message, and MUST return an instance that has the
|
|
||||||
* updated body parameters.
|
|
||||||
*
|
|
||||||
* @param array An array tree of UploadedFileInterface instances.
|
|
||||||
* @return self
|
|
||||||
* @throws \InvalidArgumentException if an invalid structure is provided.
|
|
||||||
*/
|
|
||||||
public function withUploadedFiles(array $uploadedFiles)
|
|
||||||
{
|
|
||||||
// TODO: Implement withUploadedFiles() method.
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ use WellRESTed\Message\ServerRequest;
|
||||||
*/
|
*/
|
||||||
class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// Construction and Marshalling
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers WellRESTed\Message\ServerRequest::__construct
|
* @covers WellRESTed\Message\ServerRequest::__construct
|
||||||
*/
|
*/
|
||||||
|
|
@ -58,233 +61,8 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
||||||
return $request;
|
return $request;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// ------------------------------------------------------------------------
|
||||||
* @covers WellRESTed\Message\ServerRequest::getServerParams
|
// Request
|
||||||
* @depends testGetServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testServerRequestProvidesServerParams($request)
|
|
||||||
{
|
|
||||||
/** @var ServerRequest $request */
|
|
||||||
$this->assertEquals("localhost", $request->getServerParams()["HTTP_HOST"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::getCookieParams
|
|
||||||
* @depends testGetServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testServerRequestProvidesCookieParams($request)
|
|
||||||
{
|
|
||||||
/** @var ServerRequest $request */
|
|
||||||
$this->assertEquals("Molly", $request->getCookieParams()["cat"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::getQueryParams
|
|
||||||
* @depends testGetServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testServerRequestProvidesQueryParams($request)
|
|
||||||
{
|
|
||||||
/** @var ServerRequest $request */
|
|
||||||
$this->assertEquals("Claude", $request->getQueryParams()["guinea_pig"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::getFileParams
|
|
||||||
* @depends testGetServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testServerRequestProvidesFilesParams($request)
|
|
||||||
{
|
|
||||||
/** @var ServerRequest $request */
|
|
||||||
$this->assertEquals("MyFile.jpg", $request->getFileParams()["file"]["name"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::getHeader
|
|
||||||
* @depends testGetServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testServerRequestProvidesHeaders($request)
|
|
||||||
{
|
|
||||||
/** @var ServerRequest $request */
|
|
||||||
$this->assertEquals(["application/json"], $request->getHeader("Accept"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testServerRequestProvidesBody()
|
|
||||||
{
|
|
||||||
$body = $this->prophesize('Psr\Http\Message\StreamInterface');
|
|
||||||
MockServerRequestTest::$bodyStream = $body->reveal();
|
|
||||||
$request = MockServerRequestTest::getServerRequest();
|
|
||||||
$this->assertSame($body->reveal(), $request->getBody());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::getAttribute
|
|
||||||
* @depends testGetServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testServerRequestProvidesAttributesIfPassed($request)
|
|
||||||
{
|
|
||||||
/** @var ServerRequest $request */
|
|
||||||
$this->assertEquals("Claude", $request->getAttribute("guinea_pig"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::withCookieParams
|
|
||||||
* @depends testGetServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testWithCookieParamsCreatesNewInstance($request1)
|
|
||||||
{
|
|
||||||
/** @var ServerRequest $request1 */
|
|
||||||
$request2 = $request1->withCookieParams([
|
|
||||||
"cat" => "Oscar"
|
|
||||||
]);
|
|
||||||
$this->assertEquals("Molly", $request1->getCookieParams()["cat"]);
|
|
||||||
$this->assertEquals("Oscar", $request2->getCookieParams()["cat"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::withQueryParams
|
|
||||||
* @depends testGetServerRequestReadsFromRequest
|
|
||||||
*/
|
|
||||||
public function testWithQueryParamsCreatesNewInstance($request1)
|
|
||||||
{
|
|
||||||
/** @var ServerRequest $request1 */
|
|
||||||
$request2 = $request1->withQueryParams([
|
|
||||||
"guinea_pig" => "Clyde"
|
|
||||||
]);
|
|
||||||
$this->assertEquals("Claude", $request1->getQueryParams()["guinea_pig"]);
|
|
||||||
$this->assertEquals("Clyde", $request2->getQueryParams()["guinea_pig"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::withParsedBody
|
|
||||||
* @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
|
|
||||||
* @preserveGlobalState disabled
|
|
||||||
* @dataProvider formContentTypeProvider
|
|
||||||
*/
|
|
||||||
public function testGetServerRequestParsesFormBody($contentType)
|
|
||||||
{
|
|
||||||
$_SERVER = [
|
|
||||||
"HTTP_HOST" => "localhost",
|
|
||||||
"HTTP_CONTENT_TYPE" => $contentType,
|
|
||||||
];
|
|
||||||
$_COOKIE = [];
|
|
||||||
$_FILES = [];
|
|
||||||
$_POST = [
|
|
||||||
"dog" => "Bear"
|
|
||||||
];
|
|
||||||
$request = ServerRequest::getServerRequest();
|
|
||||||
$this->assertEquals("Bear", $request->getParsedBody()["dog"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function formContentTypeProvider()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
["application/x-www-form-urlencoded"],
|
|
||||||
["multipart/form-data"]
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::__clone
|
|
||||||
*/
|
|
||||||
public function testCloneMakesDeepCopiesOfParsedBody()
|
|
||||||
{
|
|
||||||
$body = (object) [
|
|
||||||
"cat" => "Dog"
|
|
||||||
];
|
|
||||||
|
|
||||||
$request1 = new ServerRequest();
|
|
||||||
$request1 = $request1->withParsedBody($body);
|
|
||||||
$request2 = $request1->withHeader("X-extra", "hello world");
|
|
||||||
$this->assertEquals($request1->getParsedBody(), $request2->getParsedBody());
|
|
||||||
$this->assertNotSame($request1->getParsedBody(), $request2->getParsedBody());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::withAttribute
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::getAttribute
|
|
||||||
*/
|
|
||||||
public function testWithAttributeCreatesNewInstance()
|
|
||||||
{
|
|
||||||
$request = new ServerRequest();
|
|
||||||
$request = $request->withAttribute("cat", "Molly");
|
|
||||||
$this->assertEquals("Molly", $request->getAttribute("cat"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::withAttribute
|
|
||||||
*/
|
|
||||||
public function testWithAttributePreserversOtherAttributes()
|
|
||||||
{
|
|
||||||
$request = new ServerRequest();
|
|
||||||
$request = $request->withAttribute("cat", "Molly");
|
|
||||||
$request = $request->withAttribute("dog", "Bear");
|
|
||||||
$this->assertEquals("Molly", $request->getAttribute("cat"));
|
|
||||||
$this->assertEquals("Bear", $request->getAttribute("dog"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::getAttribute
|
|
||||||
*/
|
|
||||||
public function testGetAttributeReturnsDefaultIfNotSet()
|
|
||||||
{
|
|
||||||
$request = new ServerRequest();
|
|
||||||
$this->assertEquals("Oscar", $request->getAttribute("cat", "Oscar"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::withoutAttribute
|
|
||||||
*/
|
|
||||||
public function testWithoutAttributeCreatesNewInstance()
|
|
||||||
{
|
|
||||||
$request = new ServerRequest();
|
|
||||||
$request = $request->withAttribute("cat", "Molly");
|
|
||||||
$request = $request->withoutAttribute("cat");
|
|
||||||
$this->assertEquals("Oscar", $request->getAttribute("cat", "Oscar"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::withoutAttribute
|
|
||||||
*/
|
|
||||||
public function testWithoutAttributePreservesOtherAttributes()
|
|
||||||
{
|
|
||||||
$request = new ServerRequest();
|
|
||||||
$request = $request->withAttribute("cat", "Molly");
|
|
||||||
$request = $request->withAttribute("dog", "Bear");
|
|
||||||
$request = $request->withoutAttribute("cat");
|
|
||||||
$this->assertEquals("Bear", $request->getAttribute("dog"));
|
|
||||||
$this->assertEquals("Oscar", $request->getAttribute("cat", "Oscar"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers WellRESTed\Message\ServerRequest::getAttributes
|
|
||||||
*/
|
|
||||||
public function testGetAttributesReturnsAllAttributes()
|
|
||||||
{
|
|
||||||
$request = new ServerRequest();
|
|
||||||
$request = $request->withAttribute("cat", "Molly");
|
|
||||||
$request = $request->withAttribute("dog", "Bear");
|
|
||||||
$attributes = $request->getAttributes();
|
|
||||||
$this->assertEquals("Molly", $attributes["cat"]);
|
|
||||||
$this->assertEquals("Bear", $attributes["dog"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers WellRESTed\Message\ServerRequest::readFromServerRequest
|
* @covers WellRESTed\Message\ServerRequest::readFromServerRequest
|
||||||
|
|
@ -363,11 +141,262 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
||||||
["/", null]
|
["/", null]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getHeader
|
||||||
|
* @depends testGetServerRequestReadsFromRequest
|
||||||
|
*/
|
||||||
|
public function testServerRequestProvidesHeaders($request)
|
||||||
|
{
|
||||||
|
/** @var ServerRequest $request */
|
||||||
|
$this->assertEquals(["application/json"], $request->getHeader("Accept"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getBody
|
||||||
|
*/
|
||||||
|
public function testServerRequestProvidesBody()
|
||||||
|
{
|
||||||
|
$body = $this->prophesize('Psr\Http\Message\StreamInterface');
|
||||||
|
MockServerRequest::$bodyStream = $body->reveal();
|
||||||
|
$request = MockServerRequest::getServerRequest();
|
||||||
|
$this->assertSame($body->reveal(), $request->getBody());
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// Server Params
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getServerParams
|
||||||
|
* @depends testGetServerRequestReadsFromRequest
|
||||||
|
*/
|
||||||
|
public function testServerRequestProvidesServerParams($request)
|
||||||
|
{
|
||||||
|
/** @var ServerRequest $request */
|
||||||
|
$this->assertEquals("localhost", $request->getServerParams()["HTTP_HOST"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// Cookies
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getCookieParams
|
||||||
|
* @depends testGetServerRequestReadsFromRequest
|
||||||
|
*/
|
||||||
|
public function testServerRequestProvidesCookieParams($request)
|
||||||
|
{
|
||||||
|
/** @var ServerRequest $request */
|
||||||
|
$this->assertEquals("Molly", $request->getCookieParams()["cat"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::withCookieParams
|
||||||
|
* @depends testGetServerRequestReadsFromRequest
|
||||||
|
*/
|
||||||
|
public function testWithCookieParamsCreatesNewInstance($request1)
|
||||||
|
{
|
||||||
|
/** @var ServerRequest $request1 */
|
||||||
|
$request2 = $request1->withCookieParams([
|
||||||
|
"cat" => "Oscar"
|
||||||
|
]);
|
||||||
|
$this->assertEquals("Molly", $request1->getCookieParams()["cat"]);
|
||||||
|
$this->assertEquals("Oscar", $request2->getCookieParams()["cat"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// Query
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getQueryParams
|
||||||
|
* @depends testGetServerRequestReadsFromRequest
|
||||||
|
*/
|
||||||
|
public function testServerRequestProvidesQueryParams($request)
|
||||||
|
{
|
||||||
|
/** @var ServerRequest $request */
|
||||||
|
$this->assertEquals("Claude", $request->getQueryParams()["guinea_pig"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::withQueryParams
|
||||||
|
* @depends testGetServerRequestReadsFromRequest
|
||||||
|
*/
|
||||||
|
public function testWithQueryParamsCreatesNewInstance($request1)
|
||||||
|
{
|
||||||
|
/** @var ServerRequest $request1 */
|
||||||
|
$request2 = $request1->withQueryParams([
|
||||||
|
"guinea_pig" => "Clyde"
|
||||||
|
]);
|
||||||
|
$this->assertEquals("Claude", $request1->getQueryParams()["guinea_pig"]);
|
||||||
|
$this->assertEquals("Clyde", $request2->getQueryParams()["guinea_pig"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// Uploaded Files
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// Parsed Body
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getServerRequest
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getParsedBody
|
||||||
|
* @preserveGlobalState disabled
|
||||||
|
* @dataProvider formContentTypeProvider
|
||||||
|
*/
|
||||||
|
public function testGetServerRequestParsesFormBody($contentType)
|
||||||
|
{
|
||||||
|
$_SERVER = [
|
||||||
|
"HTTP_HOST" => "localhost",
|
||||||
|
"HTTP_CONTENT_TYPE" => $contentType,
|
||||||
|
];
|
||||||
|
$_COOKIE = [];
|
||||||
|
$_FILES = [];
|
||||||
|
$_POST = [
|
||||||
|
"dog" => "Bear"
|
||||||
|
];
|
||||||
|
$request = ServerRequest::getServerRequest();
|
||||||
|
$this->assertEquals("Bear", $request->getParsedBody()["dog"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function formContentTypeProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
["application/x-www-form-urlencoded"],
|
||||||
|
["multipart/form-data"]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::withParsedBody
|
||||||
|
* @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::__clone
|
||||||
|
*/
|
||||||
|
public function testCloneMakesDeepCopiesOfParsedBody()
|
||||||
|
{
|
||||||
|
$body = (object) [
|
||||||
|
"cat" => "Dog"
|
||||||
|
];
|
||||||
|
|
||||||
|
$request1 = new ServerRequest();
|
||||||
|
$request1 = $request1->withParsedBody($body);
|
||||||
|
$request2 = $request1->withHeader("X-extra", "hello world");
|
||||||
|
$this->assertEquals($request1->getParsedBody(), $request2->getParsedBody());
|
||||||
|
$this->assertNotSame($request1->getParsedBody(), $request2->getParsedBody());
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// Attributes
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getAttribute
|
||||||
|
* @depends testGetServerRequestReadsFromRequest
|
||||||
|
*/
|
||||||
|
public function testServerRequestProvidesAttributesIfPassed($request)
|
||||||
|
{
|
||||||
|
/** @var ServerRequest $request */
|
||||||
|
$this->assertEquals("Claude", $request->getAttribute("guinea_pig"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getAttribute
|
||||||
|
*/
|
||||||
|
public function testGetAttributeReturnsDefaultIfNotSet()
|
||||||
|
{
|
||||||
|
$request = new ServerRequest();
|
||||||
|
$this->assertEquals("Oscar", $request->getAttribute("cat", "Oscar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::withAttribute
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getAttribute
|
||||||
|
*/
|
||||||
|
public function testWithAttributeCreatesNewInstance()
|
||||||
|
{
|
||||||
|
$request = new ServerRequest();
|
||||||
|
$request = $request->withAttribute("cat", "Molly");
|
||||||
|
$this->assertEquals("Molly", $request->getAttribute("cat"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::withAttribute
|
||||||
|
*/
|
||||||
|
public function testWithAttributePreserversOtherAttributes()
|
||||||
|
{
|
||||||
|
$request = new ServerRequest();
|
||||||
|
$request = $request->withAttribute("cat", "Molly");
|
||||||
|
$request = $request->withAttribute("dog", "Bear");
|
||||||
|
$this->assertEquals("Molly", $request->getAttribute("cat"));
|
||||||
|
$this->assertEquals("Bear", $request->getAttribute("dog"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::withoutAttribute
|
||||||
|
*/
|
||||||
|
public function testWithoutAttributeCreatesNewInstance()
|
||||||
|
{
|
||||||
|
$request = new ServerRequest();
|
||||||
|
$request = $request->withAttribute("cat", "Molly");
|
||||||
|
$request = $request->withoutAttribute("cat");
|
||||||
|
$this->assertEquals("Oscar", $request->getAttribute("cat", "Oscar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::withoutAttribute
|
||||||
|
*/
|
||||||
|
public function testWithoutAttributePreservesOtherAttributes()
|
||||||
|
{
|
||||||
|
$request = new ServerRequest();
|
||||||
|
$request = $request->withAttribute("cat", "Molly");
|
||||||
|
$request = $request->withAttribute("dog", "Bear");
|
||||||
|
$request = $request->withoutAttribute("cat");
|
||||||
|
$this->assertEquals("Bear", $request->getAttribute("dog"));
|
||||||
|
$this->assertEquals("Oscar", $request->getAttribute("cat", "Oscar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::getAttributes
|
||||||
|
*/
|
||||||
|
public function testGetAttributesReturnsAllAttributes()
|
||||||
|
{
|
||||||
|
$request = new ServerRequest();
|
||||||
|
$request = $request->withAttribute("cat", "Molly");
|
||||||
|
$request = $request->withAttribute("dog", "Bear");
|
||||||
|
$attributes = $request->getAttributes();
|
||||||
|
$this->assertEquals("Molly", $attributes["cat"]);
|
||||||
|
$this->assertEquals("Bear", $attributes["dog"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * @covers WellRESTed\Message\ServerRequest::getFileParams
|
||||||
|
// * @depends testGetServerRequestReadsFromRequest
|
||||||
|
// */
|
||||||
|
// public function testServerRequestProvidesFilesParams($request)
|
||||||
|
// {
|
||||||
|
// /** @var ServerRequest $request */
|
||||||
|
// $this->assertEquals("MyFile.jpg", $request->getFileParams()["file"]["name"]);
|
||||||
|
// }
|
||||||
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
class MockServerRequestTest extends ServerRequest
|
class MockServerRequest extends ServerRequest
|
||||||
{
|
{
|
||||||
public static $bodyStream;
|
public static $bodyStream;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue