Files
breadcrumb-the-shire/tests/Service/Settings/SettingsLoginPersistenceGatewayTest.php
fs 98afac24b1 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>
2026-04-13 20:46:20 +02:00

110 lines
4.4 KiB
PHP

<?php
namespace MintyPHP\Tests\Service\Settings;
use MintyPHP\Repository\Settings\SettingRepositoryInterface;
use MintyPHP\Service\Settings\SettingsLoginPersistenceGateway;
use MintyPHP\Service\Settings\SettingsMetadataGateway;
use PHPUnit\Framework\TestCase;
class SettingsLoginPersistenceGatewayTest extends TestCase
{
public function testIsMicrosoftAutoRememberDefaultReturnsFalseByDefault(): void
{
$settings = $this->createMock(SettingRepositoryInterface::class);
$settings->method('getValue')->willReturn(null);
$gateway = new SettingsLoginPersistenceGateway(new SettingsMetadataGateway($settings));
$this->assertFalse($gateway->isMicrosoftAutoRememberDefault());
}
public function testIsMicrosoftAutoRememberDefaultReturnsTrueWhenEnabled(): void
{
$settings = $this->createMock(SettingRepositoryInterface::class);
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
return match ($key) {
'microsoft_auto_remember_default' => '1',
default => null,
};
});
$gateway = new SettingsLoginPersistenceGateway(new SettingsMetadataGateway($settings));
$this->assertTrue($gateway->isMicrosoftAutoRememberDefault());
}
public function testGetRememberTokenLifetimeDaysDefaultsTo30(): void
{
$settings = $this->createMock(SettingRepositoryInterface::class);
$settings->method('getValue')->willReturn(null);
$gateway = new SettingsLoginPersistenceGateway(new SettingsMetadataGateway($settings));
$this->assertSame(30, $gateway->getRememberTokenLifetimeDays());
}
public function testGetRememberTokenLifetimeDaysReturnsValidValue(): void
{
$settings = $this->createMock(SettingRepositoryInterface::class);
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
return match ($key) {
'remember_token_lifetime_days' => '90',
default => null,
};
});
$gateway = new SettingsLoginPersistenceGateway(new SettingsMetadataGateway($settings));
$this->assertSame(90, $gateway->getRememberTokenLifetimeDays());
}
public function testGetRememberTokenLifetimeDaysClampsToMinimum(): void
{
$settings = $this->createMock(SettingRepositoryInterface::class);
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
return match ($key) {
'remember_token_lifetime_days' => '0',
default => null,
};
});
$gateway = new SettingsLoginPersistenceGateway(new SettingsMetadataGateway($settings));
$this->assertSame(30, $gateway->getRememberTokenLifetimeDays());
}
public function testGetRememberTokenLifetimeDaysClampsToMaximum(): void
{
$settings = $this->createMock(SettingRepositoryInterface::class);
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
return match ($key) {
'remember_token_lifetime_days' => '500',
default => null,
};
});
$gateway = new SettingsLoginPersistenceGateway(new SettingsMetadataGateway($settings));
$this->assertSame(30, $gateway->getRememberTokenLifetimeDays());
}
public function testSetRememberTokenLifetimeDaysRejectsBelowRange(): void
{
$settings = $this->createMock(SettingRepositoryInterface::class);
$settings->method('getValue')->willReturn(null);
$settings->expects($this->never())->method('set');
$gateway = new SettingsLoginPersistenceGateway(new SettingsMetadataGateway($settings));
$this->assertFalse($gateway->setRememberTokenLifetimeDays(0));
}
public function testGetRememberTokenLifetimeSecondsConvertsDays(): void
{
$settings = $this->createMock(SettingRepositoryInterface::class);
$settings->method('getValue')->willReturnCallback(static function (string $key): ?string {
return match ($key) {
'remember_token_lifetime_days' => '7',
default => null,
};
});
$gateway = new SettingsLoginPersistenceGateway(new SettingsMetadataGateway($settings));
$this->assertSame(604800, $gateway->getRememberTokenLifetimeSeconds());
}
}