|
|
<?php |
|
|
|
|
|
use Kanboard\Middleware\AuthenticationMiddleware; |
|
|
|
|
|
require_once __DIR__.'/../Base.php'; |
|
|
|
|
|
class AuthenticationMiddlewareTest extends Base |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
private $middleware; |
|
|
private $nextMiddleware; |
|
|
|
|
|
protected function setUp(): void |
|
|
{ |
|
|
parent::setUp(); |
|
|
|
|
|
$this->container['authenticationManager'] = $this |
|
|
->getMockBuilder('Kanboard\Core\Security\AuthenticationManager') |
|
|
->setConstructorArgs(array($this->container)) |
|
|
->setMethods(array('checkCurrentSession')) |
|
|
->getMock(); |
|
|
|
|
|
$this->container['applicationAuthorization'] = $this |
|
|
->getMockBuilder('Kanboard\Core\Security\AccessMap') |
|
|
->setMethods(array('isAllowed')) |
|
|
->getMock(); |
|
|
|
|
|
$this->container['response'] = $this |
|
|
->getMockBuilder('Kanboard\Core\Http\Response') |
|
|
->setConstructorArgs(array($this->container)) |
|
|
->setMethods(array('redirect')) |
|
|
->getMock(); |
|
|
|
|
|
$this->container['userSession'] = $this |
|
|
->getMockBuilder('Kanboard\Core\User\UserSession') |
|
|
->setConstructorArgs(array($this->container)) |
|
|
->setMethods(array('isLogged')) |
|
|
->getMock(); |
|
|
|
|
|
$this->nextMiddleware = $this |
|
|
->getMockBuilder('Kanboard\Middleware\AuthenticationMiddleware') |
|
|
->setConstructorArgs(array($this->container)) |
|
|
->setMethods(array('execute')) |
|
|
->getMock(); |
|
|
|
|
|
$this->middleware = new AuthenticationMiddleware($this->container); |
|
|
$this->middleware->setNextMiddleware($this->nextMiddleware); |
|
|
} |
|
|
|
|
|
public function testWithBadSession() |
|
|
{ |
|
|
$this->container['authenticationManager'] |
|
|
->expects($this->once()) |
|
|
->method('checkCurrentSession') |
|
|
->will($this->returnValue(false)); |
|
|
|
|
|
$this->nextMiddleware |
|
|
->expects($this->never()) |
|
|
->method('execute'); |
|
|
|
|
|
$this->middleware->execute(); |
|
|
} |
|
|
|
|
|
public function testWithPublicAction() |
|
|
{ |
|
|
$this->container['authenticationManager'] |
|
|
->expects($this->once()) |
|
|
->method('checkCurrentSession') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->container['applicationAuthorization'] |
|
|
->expects($this->once()) |
|
|
->method('isAllowed') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->nextMiddleware |
|
|
->expects($this->never()) |
|
|
->method('execute'); |
|
|
|
|
|
$this->middleware->execute(); |
|
|
} |
|
|
|
|
|
public function testWithNotAuthenticatedUser() |
|
|
{ |
|
|
$this->container['authenticationManager'] |
|
|
->expects($this->once()) |
|
|
->method('checkCurrentSession') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->container['applicationAuthorization'] |
|
|
->expects($this->once()) |
|
|
->method('isAllowed') |
|
|
->will($this->returnValue(false)); |
|
|
|
|
|
$this->container['userSession'] |
|
|
->expects($this->once()) |
|
|
->method('isLogged') |
|
|
->will($this->returnValue(false)); |
|
|
|
|
|
$this->container['response'] |
|
|
->expects($this->once()) |
|
|
->method('redirect'); |
|
|
|
|
|
$this->nextMiddleware |
|
|
->expects($this->never()) |
|
|
->method('execute'); |
|
|
|
|
|
$this->middleware->execute(); |
|
|
} |
|
|
|
|
|
public function testWithAuthenticatedUser() |
|
|
{ |
|
|
$this->container['authenticationManager'] |
|
|
->expects($this->once()) |
|
|
->method('checkCurrentSession') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->container['applicationAuthorization'] |
|
|
->expects($this->once()) |
|
|
->method('isAllowed') |
|
|
->will($this->returnValue(false)); |
|
|
|
|
|
$this->container['userSession'] |
|
|
->expects($this->once()) |
|
|
->method('isLogged') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->container['response'] |
|
|
->expects($this->never()) |
|
|
->method('redirect'); |
|
|
|
|
|
$this->nextMiddleware |
|
|
->expects($this->once()) |
|
|
->method('execute'); |
|
|
|
|
|
$this->middleware->execute(); |
|
|
} |
|
|
} |
|
|
|