assertEquals( "my description with newlines and carriage returns", $r->getStatusDescription() ); } public function testContentLengthHeader() { $r = new SS_HTTPResponse('123ü'); $r->fixContentLength(); $this->assertNotNull($r->getHeader('Content-Length'), 'Content-length header is added'); $this->assertEquals( 5, $r->getHeader('Content-Length'), 'Header matches actual content length in bytes' ); $r->setBody('1234ü'); $r->fixContentLength(); $this->assertEquals( 6, $r->getHeader('Content-Length'), 'Header is updated when body is changed' ); } public function testHTTPResponseException() { $response = new SS_HTTPResponse("Test", 200, 'OK'); // Confirm that the exception's statusCode and statusDescription take precedence try { throw new SS_HTTPResponse_Exception($response, 404, 'not even found'); } catch(SS_HTTPResponse_Exception $e) { $this->assertEquals(404, $e->getResponse()->getStatusCode()); $this->assertEquals('not even found', $e->getResponse()->getStatusDescription()); return; } // Fail if we get to here $this->assertFalse(true, 'Something went wrong with our test exception'); } public function testExceptionContentPlainByDefault() { // Confirm that the exception's statusCode and statusDescription take precedence try { throw new SS_HTTPResponse_Exception("Some content that may be from a hacker", 404, 'not even found'); } catch(SS_HTTPResponse_Exception $e) { $this->assertEquals("text/plain", $e->getResponse()->getHeader("Content-Type")); return; } // Fail if we get to here $this->assertFalse(true, 'Something went wrong with our test exception'); } }