From 0511b157062d1e11d09d8b46fa5928f8b4617a9d Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Wed, 13 Jul 2011 20:16:14 +0000 Subject: [PATCH] * Added some tests for FauxResponse class * Made some fixes to that class and removed one unused variable --- includes/WebResponse.php | 8 ++- tests/phpunit/includes/FauxResponseTest.php | 70 +++++++++++++++++++++ 2 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 tests/phpunit/includes/FauxResponseTest.php diff --git a/includes/WebResponse.php b/includes/WebResponse.php index 6d443425c9..3d1459897c 100644 --- a/includes/WebResponse.php +++ b/includes/WebResponse.php @@ -86,12 +86,11 @@ class FauxResponse extends WebResponse { * @param $http_response_code null|int Forces the HTTP response code to the specified value. */ public function header( $string, $replace = true, $http_response_code = null ) { - $match = array(); if ( substr( $string, 0, 5 ) == 'HTTP/' ) { $parts = explode( ' ', $string, 3 ); $this->code = intval( $parts[1] ); } else { - list( $key, $val ) = explode( ":", $string, 2 ); + list( $key, $val ) = array_map( 'trim', explode( ":", $string, 2 ) ); if( $replace || !isset( $this->headers[$key] ) ) { $this->headers[$key] = $val; @@ -108,7 +107,10 @@ class FauxResponse extends WebResponse { * @return string */ public function getheader( $key ) { - return $this->headers[$key]; + if ( isset( $this->headers[$key] ) ) { + return $this->headers[$key]; + } + return null; } /** diff --git a/tests/phpunit/includes/FauxResponseTest.php b/tests/phpunit/includes/FauxResponseTest.php new file mode 100644 index 0000000000..c042004913 --- /dev/null +++ b/tests/phpunit/includes/FauxResponseTest.php @@ -0,0 +1,70 @@ +response = new FauxResponse; + } + + function testCookie() { + $this->assertEquals( null, $this->response->getcookie( 'key' ), 'Non-existing cookie' ); + $this->response->setcookie( 'key', 'val' ); + $this->assertEquals( 'val', $this->response->getcookie( 'key' ), 'Existing cookie' ); + } + + function testHeader() { + $this->assertEquals( null, $this->response->getheader( 'Location' ), 'Non-existing header' ); + + $this->response->header( 'Location: http://localhost/' ); + $this->assertEquals( 'http://localhost/', $this->response->getheader( 'Location' ), 'Set header' ); + + $this->response->header( 'Location: http://127.0.0.1/' ); + $this->assertEquals( 'http://127.0.0.1/', $this->response->getheader( 'Location' ), 'Same header' ); + + $this->response->header( 'Location: http://127.0.0.2/', false ); + $this->assertEquals( 'http://127.0.0.1/', $this->response->getheader( 'Location' ), 'Same header with override disabled' ); + } + + function testResponseCode() { + $this->response->header( 'HTTP/1.1 200' ); + $this->assertEquals( 200, $this->response->getStatusCode(), 'Header with no message' ); + + $this->response->header( 'HTTP/1.x 201' ); + $this->assertEquals( 201, $this->response->getStatusCode(), 'Header with no message and protocol 1.x' ); + + $this->response->header( 'HTTP/1.1 202 OK' ); + $this->assertEquals( 202, $this->response->getStatusCode(), 'Normal header' ); + + $this->response->header( 'HTTP/1.x 203 OK' ); + $this->assertEquals( 203, $this->response->getStatusCode(), 'Normal header with no message and protocol 1.x' ); + + $this->response->header( 'HTTP/1.x 204 OK', false, 205 ); + $this->assertEquals( 205, $this->response->getStatusCode(), 'Third parameter overrides the HTTP/... header' ); + + $this->response->header( 'Location: http://localhost/', false, 206 ); + $this->assertEquals( 206, $this->response->getStatusCode(), 'Third parameter with another header' ); + } +} -- 2.20.1