|
|
@ -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(); |
|
|
|
|
|
|
|
|
|
|
|