Browse Source

#11857: Added test for AccessRule matching by verb

ar-bug
Alexander Makarov 8 years ago
parent
commit
894f832dca
  1. 71
      tests/framework/filters/AccessRuleTest.php

71
tests/framework/filters/AccessRuleTest.php

@ -26,26 +26,43 @@ class AccessRuleTest extends \yiiunit\TestCase
$this->mockWebApplication(); $this->mockWebApplication();
} }
protected function mockObjects() /**
* @param string $method
* @return Request
*/
protected function mockRequest($method = 'GET')
{ {
$controller = new Controller('site', Yii::$app); /** @var Request $request */
$action = new Action('test', $controller); $request = $this->getMockBuilder('\yii\web\Request')->setMethods(['getMethod'])->getMock();
$request->method('getMethod')->willReturn($method);
return $request;
}
$user = new User([ /**
* @return User
*/
protected function mockUser()
{
return new User([
'identityClass' => UserIdentity::className(), 'identityClass' => UserIdentity::className(),
'enableAutoLogin' => false, 'enableAutoLogin' => false,
]); ]);
}
return [$action, $user, Yii::$app->request]; /**
* @return Action
*/
protected function mockAction()
{
$controller = new Controller('site', Yii::$app);
return new Action('test', $controller);
} }
public function testMatchAction() public function testMatchAction()
{ {
/** @var $action Action */ $action = $this->mockAction();
/** @var $user User */ $user = $this->mockUser();
/** @var $request Request */ $request = $this->mockRequest();
list($action, $user, $request) = $this->mockObjects();
$rule = new AccessRule([ $rule = new AccessRule([
'allow' => true, 'allow' => true,
@ -73,16 +90,33 @@ class AccessRuleTest extends \yiiunit\TestCase
// TODO test match roles // TODO test match roles
// TODO test match verb public function testMatchVerb()
{
$action = $this->mockAction();
$user = $this->mockUser();
$rule = new AccessRule([
'allow' => true,
'verbs' => ['POST', 'get'],
]);
$request = $this->mockRequest('GET');
$this->assertTrue($rule->allows($action, $user, $request));
$request = $this->mockRequest('POST');
$this->assertTrue($rule->allows($action, $user, $request));
$request = $this->mockRequest('HEAD');
$this->assertNull($rule->allows($action, $user, $request));
}
// TODO test match custom callback // TODO test match custom callback
public function testMatchIP() public function testMatchIP()
{ {
/** @var $action Action */ $action = $this->mockAction();
/** @var $user User */ $user = $this->mockUser();
/** @var $request Request */ $request = $this->mockRequest();
list($action, $user, $request) = $this->mockObjects();
$rule = new AccessRule(); $rule = new AccessRule();
@ -162,10 +196,9 @@ class AccessRuleTest extends \yiiunit\TestCase
public function testMatchIPWildcard() public function testMatchIPWildcard()
{ {
/** @var $action Action */ $action = $this->mockAction();
/** @var $user User */ $user = $this->mockUser();
/** @var $request Request */ $request = $this->mockRequest();
list($action, $user, $request) = $this->mockObjects();
$rule = new AccessRule(); $rule = new AccessRule();

Loading…
Cancel
Save