Files
breadcrumb-the-shire/modules/helpdesk/tests/Module/Helpdesk/Service/HelpdeskOAuthTokenServiceTest.php
fs 4e6b586b77 refactor: enforce layer discipline — move repositories, fix constructor injection
- Move HelpdeskTenantSettingsRepository and HelpdeskTokenRepository from
  Service/ to Repository/ directory (GR-SEC-003: SQL only in repositories)
- Make AccessControl constructor require IntendedUrlService explicitly
  instead of falling back to `new IntendedUrlService()` (GR-TEST-002:
  no service instantiation outside factories)
- Update all imports and tests accordingly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 19:28:07 +02:00

72 lines
2.9 KiB
PHP

<?php
namespace MintyPHP\Tests\Module\Helpdesk\Service;
use MintyPHP\Module\Helpdesk\Service\EffectiveHelpdeskSettingsService;
use MintyPHP\Module\Helpdesk\Service\HelpdeskOAuthTokenService;
use MintyPHP\Module\Helpdesk\Service\HelpdeskSettingsGateway;
use MintyPHP\Module\Helpdesk\Repository\HelpdeskTokenRepository;
use PHPUnit\Framework\TestCase;
class HelpdeskOAuthTokenServiceTest extends TestCase
{
private function createService(?string $authMode = null, ?string $cachedToken = null): HelpdeskOAuthTokenService
{
$settings = $this->createMock(EffectiveHelpdeskSettingsService::class);
$settings->method('getAuthMode')->willReturn($authMode ?? HelpdeskSettingsGateway::AUTH_MODE_BASIC);
$tokenRepo = $this->createMock(HelpdeskTokenRepository::class);
$tokenRepo->method('findValidToken')->willReturn($cachedToken);
return new HelpdeskOAuthTokenService($settings, $tokenRepo);
}
public function testReturnsNullWhenAuthModeIsBasic(): void
{
$service = $this->createService(HelpdeskSettingsGateway::AUTH_MODE_BASIC);
$this->assertNull($service->getAccessToken(1));
}
public function testReturnsCachedTokenWhenAvailable(): void
{
$service = $this->createService(HelpdeskSettingsGateway::AUTH_MODE_OAUTH2, 'cached-bearer-token');
$this->assertSame('cached-bearer-token', $service->getAccessToken(1));
}
public function testReturnsNullWhenNoCachedTokenExists(): void
{
$service = $this->createService(HelpdeskSettingsGateway::AUTH_MODE_OAUTH2, null);
$this->assertNull($service->getAccessToken(1));
}
public function testReturnsNullForBasicAuthRegardlessOfTenantId(): void
{
$service = $this->createService(HelpdeskSettingsGateway::AUTH_MODE_BASIC);
$this->assertNull($service->getAccessToken(99));
}
public function testDoesNotQueryCacheWhenAuthModeIsBasic(): void
{
$settings = $this->createMock(EffectiveHelpdeskSettingsService::class);
$settings->method('getAuthMode')->willReturn(HelpdeskSettingsGateway::AUTH_MODE_BASIC);
$tokenRepo = $this->createMock(HelpdeskTokenRepository::class);
$tokenRepo->expects($this->never())->method('findValidToken');
$service = new HelpdeskOAuthTokenService($settings, $tokenRepo);
$service->getAccessToken(1);
}
public function testDoesNotQueryCacheForInvalidTenantId(): void
{
$settings = $this->createMock(EffectiveHelpdeskSettingsService::class);
$settings->method('getAuthMode')->willReturn(HelpdeskSettingsGateway::AUTH_MODE_OAUTH2);
$tokenRepo = $this->createMock(HelpdeskTokenRepository::class);
$tokenRepo->expects($this->never())->method('findValidToken');
$service = new HelpdeskOAuthTokenService($settings, $tokenRepo);
$this->assertNull($service->getAccessToken(0));
}
}