test: add 92 tests for 12 untested gateway and service classes
Cover Settings gateways (Session, LoginPersistence, SystemAudit, Smtp, FrontendTelemetry, Metadata, App), Auth gateways (ExternalIdentity, Tenant), DirectorySettings, UserSettings, and HotkeyService. Gateway test coverage rises from 25% to 52%, overall service/gateway coverage from 58.6% to 70.7%. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
123
tests/Service/Settings/SettingsSessionGatewayTest.php
Normal file
123
tests/Service/Settings/SettingsSessionGatewayTest.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
namespace MintyPHP\Tests\Service\Settings;
|
||||
|
||||
use MintyPHP\Repository\Settings\SettingRepositoryInterface;
|
||||
use MintyPHP\Service\Settings\SettingsMetadataGateway;
|
||||
use MintyPHP\Service\Settings\SettingsSessionGateway;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class SettingsSessionGatewayTest extends TestCase
|
||||
{
|
||||
public function testGetSessionIdleTimeoutMinutesDefaultsTo30WhenNoSetting(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturn(null);
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertSame(30, $gateway->getSessionIdleTimeoutMinutes());
|
||||
}
|
||||
|
||||
public function testGetSessionIdleTimeoutMinutesReturnsValueWithinRange(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
|
||||
return match ($key) {
|
||||
'session_idle_timeout_minutes' => '60',
|
||||
default => null,
|
||||
};
|
||||
});
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertSame(60, $gateway->getSessionIdleTimeoutMinutes());
|
||||
}
|
||||
|
||||
public function testGetSessionIdleTimeoutMinutesClampsToMinimum(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
|
||||
return match ($key) {
|
||||
'session_idle_timeout_minutes' => '3',
|
||||
default => null,
|
||||
};
|
||||
});
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertSame(30, $gateway->getSessionIdleTimeoutMinutes());
|
||||
}
|
||||
|
||||
public function testGetSessionIdleTimeoutMinutesClampsToMaximum(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
|
||||
return match ($key) {
|
||||
'session_idle_timeout_minutes' => '2000',
|
||||
default => null,
|
||||
};
|
||||
});
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertSame(30, $gateway->getSessionIdleTimeoutMinutes());
|
||||
}
|
||||
|
||||
public function testSetSessionIdleTimeoutMinutesRejectsBelowRange(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturn(null);
|
||||
$settings->expects($this->never())->method('set');
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertFalse($gateway->setSessionIdleTimeoutMinutes(3));
|
||||
}
|
||||
|
||||
public function testGetSessionAbsoluteTimeoutHoursDefaultsTo8(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturn(null);
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertSame(8, $gateway->getSessionAbsoluteTimeoutHours());
|
||||
}
|
||||
|
||||
public function testGetSessionAbsoluteTimeoutHoursReturnsValidValue(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
|
||||
return match ($key) {
|
||||
'session_absolute_timeout_hours' => '12',
|
||||
default => null,
|
||||
};
|
||||
});
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertSame(12, $gateway->getSessionAbsoluteTimeoutHours());
|
||||
}
|
||||
|
||||
public function testGetSessionIdleTimeoutSecondsConvertsMinutes(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
|
||||
return match ($key) {
|
||||
'session_idle_timeout_minutes' => '60',
|
||||
default => null,
|
||||
};
|
||||
});
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertSame(3600, $gateway->getSessionIdleTimeoutSeconds());
|
||||
}
|
||||
|
||||
public function testGetSessionAbsoluteTimeoutSecondsConvertsHours(): void
|
||||
{
|
||||
$settings = $this->createMock(SettingRepositoryInterface::class);
|
||||
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
|
||||
return match ($key) {
|
||||
'session_absolute_timeout_hours' => '12',
|
||||
default => null,
|
||||
};
|
||||
});
|
||||
|
||||
$gateway = new SettingsSessionGateway(new SettingsMetadataGateway($settings));
|
||||
$this->assertSame(43200, $gateway->getSessionAbsoluteTimeoutSeconds());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user