Check if accessor matched request method.
It's easier to find errors in the code if an exception is thrown.
This commit is contained in:
parent
469b309b21
commit
d49e982ac8
|
@ -152,6 +152,9 @@ class Request implements \ArrayAccess, \Countable, IRequest {
|
|||
switch($name) {
|
||||
case 'get':
|
||||
case 'post':
|
||||
if($this->method !== strtoupper($name)) {
|
||||
throw new \BadMethodCallException(sprintf('%s cannot be accessed in a %s request.', $name, $this->method));
|
||||
}
|
||||
case 'files':
|
||||
case 'server':
|
||||
case 'env':
|
||||
|
|
|
@ -14,6 +14,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
|
|||
public function testRequestAccessors() {
|
||||
$vars = array(
|
||||
'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'),
|
||||
'method' => 'GET',
|
||||
);
|
||||
|
||||
$request = new Request($vars);
|
||||
|
@ -73,4 +74,30 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
|
|||
$request->{'nickname'} = 'Janey';
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException BadMethodCallException
|
||||
*/
|
||||
public function testGetTheMethodRight() {
|
||||
$vars = array(
|
||||
'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'),
|
||||
'method' => 'GET',
|
||||
);
|
||||
|
||||
$request = new Request($vars);
|
||||
$result = $request->post;
|
||||
}
|
||||
|
||||
public function testTheMethodIsRight() {
|
||||
$vars = array(
|
||||
'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'),
|
||||
'method' => 'GET',
|
||||
);
|
||||
|
||||
$request = new Request($vars);
|
||||
$this->assertEquals('GET', $request->method);
|
||||
$result = $request->get;
|
||||
$this->assertEquals('John Q. Public', $result['name']);
|
||||
$this->assertEquals('Joey', $result['nickname']);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue