diff --git a/lib/Cake/Network/Http/Request.php b/lib/Cake/Network/Http/Request.php index 20bf9711b87..a7cff9ac5b7 100644 --- a/lib/Cake/Network/Http/Request.php +++ b/lib/Cake/Network/Http/Request.php @@ -13,6 +13,8 @@ */ namespace Cake\Network\Http; +use Cake\Error; + /** * Implements methods for HTTP requests. */ @@ -48,6 +50,10 @@ public function method($method = null) { if ($method === null) { return $this->_method; } + $name = __CLASS__ . '::METHOD_' . strtoupper($method); + if (!defined($name)) { + throw new Error\Exception(__d('cake_dev', 'Invalid method type')); + } $this->_method = $method; return $this; } diff --git a/lib/Cake/Test/TestCase/Network/Http/RequestTest.php b/lib/Cake/Test/TestCase/Network/Http/RequestTest.php new file mode 100644 index 00000000000..744d0a83913 --- /dev/null +++ b/lib/Cake/Test/TestCase/Network/Http/RequestTest.php @@ -0,0 +1,90 @@ +assertSame($request, $request->url('http://example.com')); + + $this->assertEquals('http://example.com', $request->url()); + } + +/** + * test method method. + * + * @return void + */ + public function testMethod() { + $request = new Request(); + $this->assertSame($request, $request->method(Request::METHOD_GET)); + + $this->assertEquals(Request::METHOD_GET, $request->method()); + } + +/** + * test invalid method. + * + * @expectedException Cake\Error\Exception + * @return void + */ + public function testMethodInvalid() { + $request = new Request(); + $request->method('set on fire'); + } + +/** + * test content method. + * + * @return void + */ + public function testContent() { + $data = '{"json":"data"}'; + $request = new Request(); + $this->assertSame($request, $request->content($data)); + + $this->assertEquals($data, $request->content()); + } + +/** + * test header method. + * + * @return void + */ + public function testHeader() { + $this->markTestIncomplete(); + } + +/** + * test headers being case insenstive + * + * @return void + */ + public function testHeaderInsensitive() { + $this->markTestIncomplete(); + } + +}