serverBackup = $_SERVER; $this->getBackup = $_GET; RequestContext::resetForTests(); } protected function tearDown(): void { $_SERVER = $this->serverBackup; $_GET = $this->getBackup; RequestContext::resetForTests(); } public function testCurrentRequestIdIsNullBeforeStart(): void { $service = new ApiAuditService( $this->createMock(ApiAuditLogRepository::class), new RequestRuntime() ); $this->assertNull($service->currentRequestId()); } public function testCurrentRequestIdIsGeneratedForRegularRequests(): void { $_SERVER['REQUEST_METHOD'] = 'GET'; $_SERVER['REQUEST_URI'] = '/api/v1/me?x=1'; $_GET = ['x' => '1']; $service = new ApiAuditService( $this->createMock(ApiAuditLogRepository::class), new RequestRuntime() ); $service->startRequestContext(); $requestId = $service->currentRequestId(); $this->assertNotNull($requestId); $this->assertMatchesRegularExpression( '/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i', $requestId ); $service->startRequestContext(); $this->assertSame($requestId, $service->currentRequestId()); } public function testCurrentRequestIdStaysNullForOptionsRequests(): void { $_SERVER['REQUEST_METHOD'] = 'OPTIONS'; $_SERVER['REQUEST_URI'] = '/api/v1/me'; $_GET = []; $service = new ApiAuditService( $this->createMock(ApiAuditLogRepository::class), new RequestRuntime() ); $service->startRequestContext(); $this->assertNull($service->currentRequestId()); } }