From 614da5f2ff8e3163b64d8323a3101735deaf319a Mon Sep 17 00:00:00 2001 From: PJ Dietz Date: Sat, 21 Feb 2015 15:59:08 -0500 Subject: [PATCH] Update tests for messages. --- src/pjdietz/WellRESTed/Message.php | 7 +- test/ApacheRequestHeadersTest.php | 1 + test/MessageTest.php | 95 ++++++++++++++ test/RequestTest.php | 196 ++++++++--------------------- test/ResponseTest.php | 71 ++++------- 5 files changed, 169 insertions(+), 201 deletions(-) create mode 100644 test/MessageTest.php diff --git a/src/pjdietz/WellRESTed/Message.php b/src/pjdietz/WellRESTed/Message.php index 5f66f5a..b1b39e1 100644 --- a/src/pjdietz/WellRESTed/Message.php +++ b/src/pjdietz/WellRESTed/Message.php @@ -4,7 +4,7 @@ * pjdietz\WellRESTed\Message * * @author PJ Dietz - * @copyright Copyright 2014 by PJ Dietz + * @copyright Copyright 2015 by PJ Dietz * @license MIT */ @@ -134,17 +134,12 @@ abstract class Message public function unsetHeader($name) { $lowerName = strtolower($name); - if (isset($this->headerLookup[$lowerName])) { - $realName = $this->headerLookup[$lowerName]; - if (isset($this->headers[$realName])) { unset($this->headers[$realName]); } - unset($this->headerLookup[$lowerName]); - } } } diff --git a/test/ApacheRequestHeadersTest.php b/test/ApacheRequestHeadersTest.php index be9ca98..b290a6c 100644 --- a/test/ApacheRequestHeadersTest.php +++ b/test/ApacheRequestHeadersTest.php @@ -7,6 +7,7 @@ use pjdietz\WellRESTed\Request; class ApacheRequestHeadersTest extends \PHPUnit_Framework_TestCase { /** + * @covers pjdietz\WellRESTed\Request::getRequestHeaders * @runInSeparateProcess * @preserveGlobalState disabled */ diff --git a/test/MessageTest.php b/test/MessageTest.php new file mode 100644 index 0000000..93c7699 --- /dev/null +++ b/test/MessageTest.php @@ -0,0 +1,95 @@ +getMockForAbstractClass("\\pjdietz\\WellRESTed\\Message"); + $body = "This is the body"; + $message->setBody($body); + $this->assertEquals($body, $message->getBody()); + } + + public function testBodyIsNullByDefault() + { + $message = $this->getMockForAbstractClass("\\pjdietz\\WellRESTed\\Message"); + $this->assertNull($message->getBody()); + } + + /** + * @dataProvider headerProvider + */ + public function testSetsHeader($headerKey, $headerValue, $badCapsKey) + { + $message = $this->getMockForAbstractClass("\\pjdietz\\WellRESTed\\Message"); + $message->setHeader($headerKey, $headerValue); + $this->assertEquals($headerValue, $message->getHeader($badCapsKey)); + } + + /** + * @dataProvider headerProvider + */ + public function testUpdatesHeader($headerKey, $headerValue, $testName) + { + $message = $this->getMockForAbstractClass("\\pjdietz\\WellRESTed\\Message"); + $message->setHeader($headerKey, $headerValue); + $newValue = "newvalue"; + $message->setHeader($testName, "newvalue"); + $this->assertEquals($newValue, $message->getHeader($testName)); + } + + /** + * @dataProvider headerProvider + */ + public function testNonsetHeaderIsNull() + { + $message = $this->getMockForAbstractClass("\\pjdietz\\WellRESTed\\Message"); + $this->assertNull($message->getHeader("no-header")); + } + + /** + * @dataProvider headerProvider + */ + public function testUnsetHeaderIsNull($headerKey, $headerValue, $testName) + { + $message = $this->getMockForAbstractClass("\\pjdietz\\WellRESTed\\Message"); + $message->setHeader($headerKey, $headerValue); + $message->unsetHeader($testName); + $this->assertNull($message->getHeader($headerKey)); + } + + /** + * @dataProvider headerProvider + */ + public function testChecksIfHeaderIsSet($headerKey, $headerValue, $testName) + { + $message = $this->getMockForAbstractClass("\\pjdietz\\WellRESTed\\Message"); + $message->setHeader($headerKey, $headerValue); + $this->assertTrue($message->issetHeader($testName)); + } + + public function headerProvider() + { + return [ + ["Accept-Charset", "utf-8", "accept-charset"], + ["Accept-Encoding", "gzip, deflate", "ACCEPT-ENCODING"], + ["Cache-Control", "no-cache", "Cache-Control"], + ]; + } + + public function testReturnsListOfHeaders() + { + $message = $this->getMockForAbstractClass("\\pjdietz\\WellRESTed\\Message"); + $headers = $this->headerProvider(); + foreach ($headers as $header) { + $message->setHeader($header[0], $header[1]); + } + $this->assertEquals(count($headers), count($message->getHeaders())); + } + +} diff --git a/test/RequestTest.php b/test/RequestTest.php index 306bfe6..f94a518 100644 --- a/test/RequestTest.php +++ b/test/RequestTest.php @@ -6,12 +6,15 @@ use Faker\Factory; use pjdietz\WellRESTed\Request; use pjdietz\WellRESTed\Test; +/** + * @covers pjdietz\WellRESTed\Request + */ class RequestTest extends \PHPUnit_Framework_TestCase { /** * @dataProvider methodProvider */ - public function testSetMethod($method) + public function testSetsMethod($method) { $rqst = new Request(); $rqst->setMethod($method); @@ -20,20 +23,20 @@ class RequestTest extends \PHPUnit_Framework_TestCase public function methodProvider() { - return array( - array("GET"), - array("POST"), - array("PUT"), - array("DELETE"), - array("OPTIONS"), - array("HEAD") - ); + return [ + ["GET"], + ["POST"], + ["PUT"], + ["DELETE"], + ["OPTIONS"], + ["HEAD"] + ]; } /** * @dataProvider uriProvider */ - public function testSetUri($uri, $data) + public function testSetsUri($uri, $data) { $rqst = new Request($uri); $this->assertEquals($data->uri, $rqst->getUri()); @@ -42,7 +45,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider uriProvider */ - public function testParseSchemeFromUri($uri, $data) + public function testParsesSchemeFromUri($uri, $data) { $rqst = new Request($uri); $this->assertEquals($data->scheme, $rqst->getScheme()); @@ -51,7 +54,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider uriProvider */ - public function testParseHostnameFromUri($uri, $data) + public function testParsesHostnameFromUri($uri, $data) { $rqst = new Request($uri); $this->assertEquals($data->hostname, $rqst->getHostname()); @@ -60,7 +63,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider uriProvider */ - public function testParsePortFromUri($uri, $data) + public function testParsesPortFromUri($uri, $data) { $rqst = new Request($uri); $this->assertEquals($data->port, $rqst->getPort()); @@ -69,7 +72,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider uriProvider */ - public function testParsePathFromUri($uri, $data) + public function testParsesPathFromUri($uri, $data) { $rqst = new Request($uri); $this->assertEquals($data->path, $rqst->getPath()); @@ -78,7 +81,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider uriProvider */ - public function testParsePathPartsFromUri($uri, $data) + public function testParsesPathPartsFromUri($uri, $data) { $rqst = new Request($uri); $this->assertEquals($data->parts, $rqst->getPathParts()); @@ -87,7 +90,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider uriProvider */ - public function testParseQueryFromUri($uri, $data) + public function testParsesQueryFromUri($uri, $data) { $rqst = new Request($uri); $this->assertEquals($data->query, $rqst->getQuery()); @@ -95,8 +98,8 @@ class RequestTest extends \PHPUnit_Framework_TestCase public function uriProvider() { - return array( - array( + return [ + [ "http://www.google.com", (object) [ "uri" => "http://www.google.com", @@ -107,8 +110,8 @@ class RequestTest extends \PHPUnit_Framework_TestCase "query" => [], "parts" => [] ] - ), - array( + ], + [ "https://www.google.com", (object) [ "uri" => "https://www.google.com", @@ -119,8 +122,8 @@ class RequestTest extends \PHPUnit_Framework_TestCase "query" => [], "parts" => [] ] - ), - array( + ], + [ "localhost:8080/my/path/with/parts", (object) [ "uri" => "http://localhost:8080/my/path/with/parts", @@ -131,8 +134,8 @@ class RequestTest extends \PHPUnit_Framework_TestCase "query" => [], "parts" => ["my", "path", "with", "parts"] ] - ), - array( + ], + [ "localhost?dog=bear&cat=molly", (object) [ "uri" => "http://localhost?cat=molly&dog=bear", @@ -146,8 +149,8 @@ class RequestTest extends \PHPUnit_Framework_TestCase ], "parts" => [] ] - ), - array( + ], + [ "/my-page?id=2", (object) [ "uri" => "http://localhost/my-page?id=2", @@ -160,28 +163,14 @@ class RequestTest extends \PHPUnit_Framework_TestCase ], "parts" => ["my-page"] ] - ) - ); - } - - public function testSetBody() - { - $body = "This is the body"; - $rqst = new Request(); - $rqst->setBody($body); - $this->assertEquals($body, $rqst->getBody()); - } - - public function testBodyIsNullByDefault() - { - $rqst = new Request(); - $this->assertNull($rqst->getBody()); + ] + ]; } /** * @dataProvider formProvider */ - public function testFormFieldsEncodeProperly($form) + public function testEncodesFormFields($form) { $rqst = new Request(); $rqst->setFormFields($form); @@ -193,7 +182,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider formProvider */ - public function testFormFieldsDecodeProperly($form) + public function testDecodesFormFields($form) { $rqst = new Request(); $rqst->setFormFields($form); @@ -215,81 +204,10 @@ class RequestTest extends \PHPUnit_Framework_TestCase ]; } - /** - * @dataProvider headerProvider - */ - public function testSetHeader($headerKey, $headerValue, $badCapsKey) - { - $rqst = new Request(); - $rqst->setHeader($headerKey, $headerValue); - $this->assertEquals($headerValue, $rqst->getHeader($badCapsKey)); - } - - /** - * @dataProvider headerProvider - */ - public function testUpdateHeader($headerKey, $headerValue, $testName) - { - $rqst = new Request(); - $rqst->setHeader($headerKey, $headerValue); - $newValue = "newvalue"; - $rqst->setHeader($testName, "newvalue"); - $this->assertEquals($newValue, $rqst->getHeader($testName)); - } - - /** - * @dataProvider headerProvider - */ - public function testNonsetHeaderIsNull() - { - $rqst = new Request(); - $this->assertNull($rqst->getHeader("no-header")); - } - - /** - * @dataProvider headerProvider - */ - public function testUnsetHeaderIsNull($headerKey, $headerValue, $testName) - { - $rqst = new Request(); - $rqst->setHeader($headerKey, $headerValue); - $rqst->unsetHeader($testName); - $this->assertNull($rqst->getHeader($headerKey)); - } - - /** - * @dataProvider headerProvider - */ - public function testCheckIfHeaderIsSet($headerKey, $headerValue, $testName) - { - $rqst = new Request(); - $rqst->setHeader($headerKey, $headerValue); - $this->assertTrue($rqst->issetHeader($testName)); - } - - public function headerProvider() - { - return array( - array("Accept-Charset", "utf-8", "accept-charset"), - array("Accept-Encoding", "gzip, deflate", "ACCEPT-ENCODING"), - array("Cache-Control", "no-cache", "Cache-Control"), - ); - } - - public function testCountHeader() - { - $rqst = new Request(); - $headers = $this->headerProvider(); - foreach ($headers as $header) { - $rqst->setHeader($header[0], $header[1]); - } - $this->assertEquals(count($headers), count($rqst->getHeaders())); - } - /** * @dataProvider queryProvider */ - public function testSetQuery($input, $expected) + public function testSetsQuery($input, $expected) { $rqst = new Request(); $rqst->setQuery($input); @@ -323,7 +241,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase * @dataProvider invalidQueryProvider * @expectedException \InvalidArgumentException */ - public function testFailOnInvalidQuery($query) + public function testThrowsExceptionOnInvalidQuery($query) { $rqst = new Request(); $rqst->setQuery($query); @@ -343,7 +261,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase * @dataProvider invalidSchemeProvider * @expectedException \UnexpectedValueException */ - public function testFailOnInvalidScheme($scheme) + public function testThrowsExceptionOnInvalidScheme($scheme) { $rqst = new Request(); $rqst->setScheme($scheme); @@ -363,7 +281,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider defaultPortProvider */ - public function testSetDefaultPort($scheme, $port) + public function testSetsDefaultPort($scheme, $port) { $rqst = new Request("http://localhost:9999"); $rqst->setScheme($scheme); @@ -381,84 +299,68 @@ class RequestTest extends \PHPUnit_Framework_TestCase /** * @dataProvider serverProvider + * @preserveGlobalState disabled */ - public function testReadServerRequestMethod($serverVars, $expected) + public function testReadsServerRequestMethod($serverVars, $expected) { - $original = $_SERVER; $_SERVER = array_merge($_SERVER, $serverVars); $rqst = new Request(); $rqst->readHttpRequest(); $this->assertEquals($expected->method, $rqst->getMethod()); - $_SERVER = $original; } - /** * @dataProvider serverProvider + * @preserveGlobalState disabled */ - public function testReadServerRequestHost($serverVars, $expected) + public function testReadsServerRequestHost($serverVars, $expected) { - $original = $_SERVER; $_SERVER = array_merge($_SERVER, $serverVars); $rqst = new Request(); $rqst->readHttpRequest(); $this->assertEquals($expected->host, $rqst->getHostname()); - $_SERVER = $original; } /** * @dataProvider serverProvider + * @preserveGlobalState disabled */ - public function testReadServerRequestPath($serverVars, $expected) + public function testReadsServerRequestPath($serverVars, $expected) { - $original = $_SERVER; $_SERVER = array_merge($_SERVER, $serverVars); $rqst = new Request(); $rqst->readHttpRequest(); $this->assertEquals($expected->path, $rqst->getPath()); - $_SERVER = $original; } /** * @dataProvider serverProvider + * @preserveGlobalState disabled */ - public function testReadServerRequestHeaders($serverVars, $expected) + public function testReadsServerRequestHeaders($serverVars, $expected) { - $original = $_SERVER; $_SERVER = array_merge($_SERVER, $serverVars); $rqst = new Request(); $rqst->readHttpRequest(); foreach ($expected->headers as $name => $value) { $this->assertEquals($value, $rqst->getHeader($name)); } - $_SERVER = $original; } /** - * We can only test the static member once, so no need for dataProvider. + * @preserveGlobalState disabled */ - public function testReadStaticRequest() + public function testReadsStaticRequest() { $data = $this->serverProvider(); $serverVars = $data[0][0]; $expected = $data[0][1]; - $original = $_SERVER; $_SERVER = array_merge($_SERVER, $serverVars); $rqst = Request::getRequest(); $this->assertEquals($expected->host, $rqst->getHostname()); - $_SERVER = $original; - - return $rqst; - } - - /** - * @depends testReadStaticRequest - */ - public function testReadStaticRequestAgain($previousRequest) - { - $rqst = Request::getRequest(); - $this->assertSame($previousRequest, $rqst); + $rqst2 = Request::getRequest(); + $this->assertSame($rqst2, $rqst); } public function serverProvider() diff --git a/test/ResponseTest.php b/test/ResponseTest.php index 2c8e9c3..8316cd8 100644 --- a/test/ResponseTest.php +++ b/test/ResponseTest.php @@ -5,12 +5,15 @@ namespace pjdietz\WellRESTed\Test; use Faker\Factory; use pjdietz\WellRESTed\Response; +/** + * @covers pjdietz\WellRESTed\Response + */ class ResponseTest extends \PHPUnit_Framework_TestCase { /** * @dataProvider statusCodeProvider */ - public function testSetStatusCodeInConstructor($statusCode, $reasonPhrase, $statusLine) + public function testSetsStatusCodeInConstructor($statusCode, $reasonPhrase, $statusLine) { $resp = new Response($statusCode); $this->assertEquals($statusCode, $resp->getStatusCode()); @@ -19,7 +22,17 @@ class ResponseTest extends \PHPUnit_Framework_TestCase /** * @dataProvider statusCodeProvider */ - public function testReadStatusLine($statusCode, $reasonPhrase, $statusLine) + public function testProvidesReasonPhrase($statusCode, $reasonPhrase, $statusLine) + { + $resp = new Response(); + $resp->setStatusCode($statusCode, $reasonPhrase); + $this->assertEquals(substr($statusLine, 13), $resp->getReasonPhrase()); + } + + /** + * @dataProvider statusCodeProvider + */ + public function testProvidesStatusLine($statusCode, $reasonPhrase, $statusLine) { $resp = new Response(); $resp->setStatusCode($statusCode, $reasonPhrase); @@ -29,7 +42,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase /** * @dataProvider statusCodeProvider */ - public function testReadSuccess($statusCode, $reasonPhrase, $statusLine) + public function testDeterminesSuccessFromStatusCode($statusCode, $reasonPhrase, $statusLine) { $resp = new Response(); $resp->setStatusCode($statusCode, $reasonPhrase); @@ -40,16 +53,6 @@ class ResponseTest extends \PHPUnit_Framework_TestCase } } - /** - * @dataProvider statusCodeProvider - */ - public function testReadReasonPhrase($statusCode, $reasonPhrase, $statusLine) - { - $resp = new Response(); - $resp->setStatusCode($statusCode, $reasonPhrase); - $this->assertEquals(substr($statusLine, 13), $resp->getReasonPhrase()); - } - public function statusCodeProvider() { return [ @@ -99,7 +102,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase * @dataProvider invalidReasonPhraseProvider * @expectedException \InvalidArgumentException */ - public function testFailOnInvalidReasonPhrase($statusCode, $reasonPhrase) + public function testThrowsExceptionOnInvalidReasonPhrase($statusCode, $reasonPhrase) { $resp = new Response(); $resp->setStatusCode($statusCode, $reasonPhrase); @@ -114,7 +117,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase ]; } - public function testSetBody() + public function testSetsBody() { $faker = Factory::create(); $body = $faker->text(); @@ -123,7 +126,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase $this->assertEquals($body, $resp->getBody()); } - public function testSetBodyInConstructor() + public function testSetsBodyInConstructor() { $faker = Factory::create(); $body = $faker->text(); @@ -131,7 +134,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase $this->assertEquals($body, $resp->getBody()); } - public function testSetBodyFile() + public function testSetsBodyFile() { $path = tempnam(sys_get_temp_dir(), "TST"); $resp = new Response(); @@ -140,39 +143,11 @@ class ResponseTest extends \PHPUnit_Framework_TestCase unlink($path); } - /** - * @dataProvider headerProvider - */ - public function testSetHeaders($headerKey, $headerValue, $testName) - { - $resp = new Response(); - $resp->setHeader($headerKey, $headerValue); - $this->assertEquals($headerValue, $resp->getHeader($testName)); - } - - /** - * @dataProvider headerProvider - */ - public function testSetHeadersInConstructor($headerKey, $headerValue, $testName) - { - $resp = new Response(200, "Body", array($headerKey => $headerValue)); - $this->assertEquals($headerValue, $resp->getHeader($testName)); - } - - public function headerProvider() - { - return [ - ["Content-Encoding", "gzip", "CONTENT-ENCODING"], - ["Content-Length", "2048", "content-length"], - ["Content-Type", "text/plain", "Content-Type"] - ]; - } - /** * @runInSeparateProcess * @preserveGlobalState disabled */ - public function testOutputResponse() + public function testOutputsResponse() { $faker = Factory::create(); $body = $faker->text(); @@ -190,7 +165,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase * @runInSeparateProcess * @preserveGlobalState disabled */ - public function testOutputResponseFromFile() + public function testOutputsResponseFromFile() { $path = tempnam(sys_get_temp_dir(), "TST"); $faker = Factory::create(); @@ -218,7 +193,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase * @runInSeparateProcess * @preserveGlobalState disabled */ - public function testMissingResponseFile() + public function testRespondsWithNoBodyWhenResponseFileIsMissing() { $path = tempnam(sys_get_temp_dir(), "TST");