92 lines
2.6 KiB
PHP
92 lines
2.6 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Tests\Unit\Classes;
|
||
|
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
class SessionTest extends TestCase
|
||
|
{
|
||
|
protected function setUp(): void
|
||
|
{
|
||
|
parent::setUp();
|
||
|
require_once __DIR__ . '/../../../app/classes/session.php';
|
||
|
$_SESSION = [];
|
||
|
}
|
||
|
|
||
|
protected function tearDown(): void
|
||
|
{
|
||
|
parent::tearDown();
|
||
|
$_SESSION = [];
|
||
|
}
|
||
|
|
||
|
public function testGetUsername()
|
||
|
{
|
||
|
$_SESSION['username'] = 'testuser';
|
||
|
$this->assertEquals('testuser', \Session::getUsername());
|
||
|
unset($_SESSION['username']);
|
||
|
$this->assertNull(\Session::getUsername());
|
||
|
}
|
||
|
|
||
|
public function testGetUserId()
|
||
|
{
|
||
|
$_SESSION['user_id'] = 123;
|
||
|
$this->assertEquals(123, \Session::getUserId());
|
||
|
unset($_SESSION['user_id']);
|
||
|
$this->assertNull(\Session::getUserId());
|
||
|
}
|
||
|
|
||
|
public function testIsValidSession()
|
||
|
{
|
||
|
// Invalid without required variables
|
||
|
$this->assertFalse(\Session::isValidSession());
|
||
|
|
||
|
// Valid with required variables
|
||
|
$_SESSION['user_id'] = 123;
|
||
|
$_SESSION['username'] = 'testuser';
|
||
|
$_SESSION['LAST_ACTIVITY'] = time();
|
||
|
$this->assertTrue(\Session::isValidSession());
|
||
|
|
||
|
// Invalid after timeout
|
||
|
$_SESSION['LAST_ACTIVITY'] = time() - 8000; // More than 2 hours
|
||
|
$this->assertFalse(\Session::isValidSession());
|
||
|
|
||
|
// Valid with remember me
|
||
|
$_SESSION = [
|
||
|
'user_id' => 123,
|
||
|
'username' => 'testuser',
|
||
|
'REMEMBER_ME' => true,
|
||
|
'LAST_ACTIVITY' => time() - 8000
|
||
|
];
|
||
|
$this->assertTrue(\Session::isValidSession());
|
||
|
}
|
||
|
|
||
|
public function testSetRememberMe()
|
||
|
{
|
||
|
\Session::setRememberMe(true);
|
||
|
$this->assertTrue($_SESSION['REMEMBER_ME']);
|
||
|
\Session::setRememberMe(false);
|
||
|
$this->assertFalse($_SESSION['REMEMBER_ME']);
|
||
|
}
|
||
|
|
||
|
public function test2FASession()
|
||
|
{
|
||
|
// Test storing 2FA pending info
|
||
|
\Session::store2FAPending(123, 'testuser', true);
|
||
|
$this->assertEquals(123, $_SESSION['2fa_pending_user_id']);
|
||
|
$this->assertEquals('testuser', $_SESSION['2fa_pending_username']);
|
||
|
$this->assertTrue(isset($_SESSION['2fa_pending_remember']));
|
||
|
|
||
|
// Test getting 2FA pending info
|
||
|
$pendingInfo = \Session::get2FAPending();
|
||
|
$this->assertEquals([
|
||
|
'user_id' => 123,
|
||
|
'username' => 'testuser',
|
||
|
'remember_me' => true
|
||
|
], $pendingInfo);
|
||
|
|
||
|
// Test clearing 2FA pending info
|
||
|
\Session::clear2FAPending();
|
||
|
$this->assertNull(\Session::get2FAPending());
|
||
|
}
|
||
|
}
|