createServerRequest('GET', '/'); $rf = new ResponseFactory(); $captured = null; $handler = new class ($rf, $captured) implements RequestHandlerInterface { public function __construct( private readonly ResponseFactory $rf, public ?string $captured, ) { } public function handle(ServerRequestInterface $request): ResponseInterface { $this->captured = $request->getAttribute(CspMiddleware::ATTR_NONCE); return $this->rf->createResponse(200); } }; $response = $middleware->process($request, $handler); self::assertNotNull($handler->captured); self::assertNotSame('', $handler->captured); self::assertStringContainsString( "'nonce-{$handler->captured}'", $response->getHeaderLine('Content-Security-Policy'), ); } }