| | <?php |
| |
|
| | use Kanboard\Auth\ReverseProxyAuth; |
| | use Kanboard\Core\Security\Role; |
| | use Kanboard\Model\UserModel; |
| |
|
| | require_once __DIR__.'/../Base.php'; |
| |
|
| | class ReverseProxyAuthTest extends Base |
| | { |
| | protected function setUp(): void |
| | { |
| | parent::setUp(); |
| |
|
| | $this->container['request'] = $this |
| | ->getMockBuilder('\Kanboard\Core\Http\Request') |
| | ->setConstructorArgs(array($this->container)) |
| | ->setMethods(array('getRemoteUser')) |
| | ->getMock(); |
| | } |
| |
|
| | public function testGetName() |
| | { |
| | $provider = new ReverseProxyAuth($this->container); |
| | $this->assertEquals('ReverseProxy', $provider->getName()); |
| | } |
| |
|
| | public function testAuthenticateSuccess() |
| | { |
| | $this->container['request'] |
| | ->expects($this->once()) |
| | ->method('getRemoteUser') |
| | ->will($this->returnValue('admin')); |
| |
|
| | $provider = new ReverseProxyAuth($this->container); |
| | $this->assertTrue($provider->authenticate()); |
| | } |
| |
|
| | public function testAuthenticateFailure() |
| | { |
| | $this->container['request'] |
| | ->expects($this->once()) |
| | ->method('getRemoteUser') |
| | ->will($this->returnValue('')); |
| |
|
| | $provider = new ReverseProxyAuth($this->container); |
| | $this->assertFalse($provider->authenticate()); |
| | } |
| |
|
| | public function testValidSession() |
| | { |
| | $this->container['request'] |
| | ->expects($this->once()) |
| | ->method('getRemoteUser') |
| | ->will($this->returnValue('admin')); |
| |
|
| | $_SESSION['user'] = array( |
| | 'username' => 'admin' |
| | ); |
| |
|
| | $provider = new ReverseProxyAuth($this->container); |
| | $this->assertTrue($provider->isValidSession()); |
| | } |
| |
|
| | public function testInvalidSession() |
| | { |
| | $this->container['request'] |
| | ->expects($this->once()) |
| | ->method('getRemoteUser') |
| | ->will($this->returnValue('foobar')); |
| |
|
| | $_SESSION['user'] = array( |
| | 'username' => 'admin' |
| | ); |
| |
|
| | $provider = new ReverseProxyAuth($this->container); |
| | $this->assertFalse($provider->isValidSession()); |
| | } |
| |
|
| | public function testRoleForNewUser() |
| | { |
| | $this->container['request'] |
| | ->expects($this->once()) |
| | ->method('getRemoteUser') |
| | ->will($this->returnValue('someone')); |
| |
|
| | $provider = new ReverseProxyAuth($this->container); |
| | $this->assertTrue($provider->authenticate()); |
| |
|
| | $user = $provider->getUser(); |
| | $this->assertEquals(Role::APP_USER, $user->getRole()); |
| | } |
| |
|
| | public function testRoleIsPreservedForExistingUser() |
| | { |
| | $this->container['request'] |
| | ->expects($this->once()) |
| | ->method('getRemoteUser') |
| | ->will($this->returnValue('someone')); |
| |
|
| | $provider = new ReverseProxyAuth($this->container); |
| | $userModel = new UserModel($this->container); |
| |
|
| | $this->assertEquals(2, $userModel->create(array('username' => 'someone', 'role' => Role::APP_MANAGER))); |
| |
|
| | $this->assertTrue($provider->authenticate()); |
| |
|
| | $user = $provider->getUser(); |
| | $this->assertEquals(Role::APP_MANAGER, $user->getRole()); |
| | } |
| | } |
| |
|