| <?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()); |
| } |
| } |
|
|