|
|
<?php |
|
|
|
|
|
require_once __DIR__.'/../../Base.php'; |
|
|
|
|
|
use Kanboard\Core\User\UserSession; |
|
|
use Kanboard\Core\Security\Role; |
|
|
|
|
|
class UserSessionTest extends Base |
|
|
{ |
|
|
public function testInitialize() |
|
|
{ |
|
|
$userSession = new UserSession($this->container); |
|
|
$user = array( |
|
|
'id' => '123', |
|
|
'username' => 'john', |
|
|
'password' => 'something', |
|
|
'twofactor_secret' => 'something else', |
|
|
'is_admin' => '1', |
|
|
'is_project_admin' => '0', |
|
|
'is_ldap_user' => '0', |
|
|
'twofactor_activated' => '0', |
|
|
'role' => Role::APP_MANAGER, |
|
|
'filter' => 'status:close', |
|
|
); |
|
|
|
|
|
$userSession->initialize($user); |
|
|
|
|
|
$this->assertNotEmpty($_SESSION); |
|
|
$this->assertEquals(123, $_SESSION['user']['id']); |
|
|
$this->assertEquals('john', $_SESSION['user']['username']); |
|
|
$this->assertEquals(Role::APP_MANAGER, $_SESSION['user']['role']); |
|
|
$this->assertEquals('status:close', $_SESSION['user']['filter']); |
|
|
$this->assertFalse($_SESSION['user']['is_ldap_user']); |
|
|
$this->assertFalse($_SESSION['user']['twofactor_activated']); |
|
|
$this->assertArrayNotHasKey('password', $_SESSION['user']); |
|
|
$this->assertArrayNotHasKey('twofactor_secret', $_SESSION['user']); |
|
|
$this->assertArrayNotHasKey('is_admin', $_SESSION['user']); |
|
|
$this->assertArrayNotHasKey('is_project_admin', $_SESSION['user']); |
|
|
|
|
|
$this->assertEquals('john', $userSession->getUsername()); |
|
|
} |
|
|
|
|
|
public function testGetId() |
|
|
{ |
|
|
$userSession = new UserSession($this->container); |
|
|
|
|
|
$this->assertEquals(0, $userSession->getId()); |
|
|
|
|
|
$_SESSION['user'] = array('id' => 2); |
|
|
$this->assertEquals(2, $userSession->getId()); |
|
|
|
|
|
$_SESSION['user'] = array('id' => '2'); |
|
|
$this->assertEquals(2, $userSession->getId()); |
|
|
} |
|
|
|
|
|
public function testIsLogged() |
|
|
{ |
|
|
$userSession = new UserSession($this->container); |
|
|
$this->assertFalse($userSession->isLogged()); |
|
|
|
|
|
$_SESSION['user'] = array(); |
|
|
$this->assertFalse($userSession->isLogged()); |
|
|
|
|
|
$_SESSION['user'] = array('id' => 1); |
|
|
$this->assertTrue($userSession->isLogged()); |
|
|
} |
|
|
|
|
|
public function testIsAdmin() |
|
|
{ |
|
|
$userSession = new UserSession($this->container); |
|
|
$this->assertFalse($userSession->isAdmin()); |
|
|
|
|
|
$_SESSION['user'] = array('role' => Role::APP_ADMIN); |
|
|
$this->assertTrue($userSession->isAdmin()); |
|
|
|
|
|
$_SESSION['user'] = array('role' => Role::APP_USER); |
|
|
$this->assertFalse($userSession->isAdmin()); |
|
|
|
|
|
$_SESSION['user'] = array('role' => ''); |
|
|
$this->assertFalse($userSession->isAdmin()); |
|
|
} |
|
|
|
|
|
public function testFilters() |
|
|
{ |
|
|
$userSession = new UserSession($this->container); |
|
|
$this->assertEquals('status:open', $userSession->getFilters(1)); |
|
|
|
|
|
$_SESSION['user'] = array('filter' => 'status:open'); |
|
|
$this->assertEquals('status:open', $userSession->getFilters(1)); |
|
|
|
|
|
$userSession->setFilters(1, 'assignee:me'); |
|
|
$this->assertEquals('assignee:me', $userSession->getFilters(1)); |
|
|
|
|
|
$this->assertEquals('status:open', $userSession->getFilters(2)); |
|
|
|
|
|
$userSession->setFilters(2, 'assignee:bob'); |
|
|
$this->assertEquals('assignee:bob', $userSession->getFilters(2)); |
|
|
} |
|
|
|
|
|
public function testListOrder() |
|
|
{ |
|
|
$userSession = new UserSession($this->container); |
|
|
list($order, $direction) = $userSession->getListOrder(1); |
|
|
$this->assertEquals('tasks.id', $order); |
|
|
$this->assertEquals('DESC', $direction); |
|
|
|
|
|
$userSession->setListOrder(1, 'tasks.priority', 'ASC'); |
|
|
list($order, $direction) = $userSession->getListOrder(1); |
|
|
$this->assertEquals('tasks.priority', $order); |
|
|
$this->assertEquals('ASC', $direction); |
|
|
|
|
|
list($order, $direction) = $userSession->getListOrder(2); |
|
|
$this->assertEquals('tasks.id', $order); |
|
|
$this->assertEquals('DESC', $direction); |
|
|
|
|
|
$userSession->setListOrder(2, 'tasks.is_active', 'DESC'); |
|
|
list($order, $direction) = $userSession->getListOrder(2); |
|
|
$this->assertEquals('tasks.is_active', $order); |
|
|
$this->assertEquals('DESC', $direction); |
|
|
} |
|
|
|
|
|
public function testPostAuthentication() |
|
|
{ |
|
|
$userSession = new UserSession($this->container); |
|
|
$this->assertFalse($userSession->isPostAuthenticationValidated()); |
|
|
|
|
|
$_SESSION['postAuthenticationValidated'] = false; |
|
|
$this->assertFalse($userSession->isPostAuthenticationValidated()); |
|
|
|
|
|
$userSession->setPostAuthenticationAsValidated(); |
|
|
$this->assertTrue($userSession->isPostAuthenticationValidated()); |
|
|
|
|
|
$_SESSION['user'] = array(); |
|
|
$this->assertFalse($userSession->hasPostAuthentication()); |
|
|
|
|
|
$_SESSION['user'] = array('twofactor_activated' => false); |
|
|
$this->assertFalse($userSession->hasPostAuthentication()); |
|
|
|
|
|
$_SESSION['user'] = array('twofactor_activated' => true); |
|
|
$this->assertTrue($userSession->hasPostAuthentication()); |
|
|
|
|
|
$userSession->disablePostAuthentication(); |
|
|
$this->assertFalse($userSession->hasPostAuthentication()); |
|
|
} |
|
|
} |
|
|
|