request('GET', '/infoclinica/clvisitsovacheckpass'); self::assertResponseStatusCodeSame(Response::HTTP_NOT_FOUND); } public function testClvisitsovacheckpassWithInvalidFilial(): void { $client = static::createClient(); // Тестируем GET запрос с невалидным filial (не число) - должен вернуть 404 // requirements: ['filial' => '\d+'] требует только цифры $client->request('GET', '/infoclinica/clvisitsovacheckpass/abc'); self::assertResponseStatusCodeSame(Response::HTTP_NOT_FOUND); } public function testClvisitsovacheckpassWithPostMethod(): void { $client = static::createClient(); // Тестируем POST запрос - должен вернуть 405 Method Not Allowed // так как эндпоинт принимает только GET $client->request('POST', '/infoclinica/clvisitsovacheckpass/123'); self::assertResponseStatusCodeSame(Response::HTTP_METHOD_NOT_ALLOWED); } public function testClvisitsovacheckpassWithValidFilial(): void { $client = static::createClient(); // Мокируем JWTDecoderService через контейнер $container = static::getContainer(); $jwtDecoderServiceMock = $this->createMock(JWTDecoderServiceInterface::class); $user = $this->createMock(User::class); $jwtDecoderServiceMock->method('getUser')->willReturn($user); // Заменяем сервис в контейнере $container->set(JWTDecoderServiceInterface::class, $jwtDecoderServiceMock); // Тестируем GET запрос с валидным filial $client->request('GET', '/infoclinica/clvisitsovacheckpass/123'); self::assertResponseIsSuccessful(); self::assertResponseHeaderSame('content-type', 'application/json'); $responseData = json_decode($client->getResponse()->getContent(), true); self::assertTrue($responseData); } public function testClvisitsovacheckpassWithoutAuth(): void { $client = static::createClient(); // Мокируем JWTDecoderService чтобы вернуть null (нет пользователя) $container = static::getContainer(); $jwtDecoderServiceMock = $this->createMock(JWTDecoderServiceInterface::class); $jwtDecoderServiceMock->method('getUser')->willReturn(null); // Заменяем сервис в контейнере $container->set(JWTDecoderServiceInterface::class, $jwtDecoderServiceMock); // Тестируем GET запрос без авторизации $client->request('GET', '/infoclinica/clvisitsovacheckpass/123'); self::assertResponseStatusCodeSame(Response::HTTP_UNAUTHORIZED); $responseData = json_decode($client->getResponse()->getContent(), true); self::assertArrayHasKey('error', $responseData); self::assertEquals('Пользователь не найден', $responseData['error']); } }