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();
}
protected function mockObjects()
/**
* @param string $method
* @return Request
*/
protected function mockRequest($method = 'GET')
{
$controller = new Controller('site', Yii::$app);
$action = new Action('test', $controller);
/** @var Request $request */
$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(),
'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()
{
/** @var $action Action */
/** @var $user User */
/** @var $request Request */
list($action, $user, $request) = $this->mockObjects();
$action = $this->mockAction();
$user = $this->mockUser();
$request = $this->mockRequest();
$rule = new AccessRule([
'allow' => true,
@ -73,16 +90,33 @@ class AccessRuleTest extends \yiiunit\TestCase
// 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
public function testMatchIP()
{
/** @var $action Action */
/** @var $user User */
/** @var $request Request */
list($action, $user, $request) = $this->mockObjects();
$action = $this->mockAction();
$user = $this->mockUser();
$request = $this->mockRequest();
$rule = new AccessRule();
@ -162,10 +196,9 @@ class AccessRuleTest extends \yiiunit\TestCase
public function testMatchIPWildcard()
{
/** @var $action Action */
/** @var $user User */
/** @var $request Request */
list($action, $user, $request) = $this->mockObjects();
$action = $this->mockAction();
$user = $this->mockUser();
$request = $this->mockRequest();
$rule = new AccessRule();

Loading…
Cancel
Save