- Add TestKernel that removes the kernel.reset tag from nonceCache, rateLimitCache, sessionCache and sessionStorage pools so in-memory state survives across requests within a single test (mirroring APCu persistence in production) - Add config/packages/test/ with array cache adapters and test session config - Set fixed TOTP secret (JBSWY3DPEHPK3PXP) and high rate limits in phpunit.dist.xml and .env.test so functional tests can compute valid codes and are not rate-limited - Make Kernel non-final so TestKernel can extend it - Fix testFailedLoginWithSpentNonceIsRejected and testConsumedBackupCodeCannotBeReused: clear the CookieJar between sub-requests so a session cookie set by a prior successful login does not auto-authenticate the next request via AcceptListener before the nonce/backup-code path is exercised
32 lines
838 B
PHP
32 lines
838 B
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace App;
|
|
|
|
use Psr\Cache\InvalidArgumentException;
|
|
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
|
|
|
|
class Kernel extends BaseKernel {
|
|
use MicroKernelTrait;
|
|
|
|
private PersistCache $persistCache;
|
|
|
|
/** @throws InvalidArgumentException */
|
|
public function boot(): void {
|
|
parent::boot();
|
|
|
|
$this->persistCache = $this->container->get(PersistCache::class);
|
|
$this->persistCache->boot();
|
|
}
|
|
|
|
/** @throws InvalidArgumentException */
|
|
public function terminate(Request $request, Response $response): void {
|
|
$this->persistCache->persist();
|
|
|
|
parent::terminate($request, $response);
|
|
}
|
|
}
|