Задать вопрос
@tanuxa2022

Как исправить тестовую аутентификацию по маршруту?

Моя задача — создать фикстуру и создать тест, проверяющий cтатус код по заданному маршруту и ​​наличие необходимых ключей.

Я столкнулся со следующей проблемой. При запуске теста без использования фикстур и проверки состояния кода возвращается следующий результат: Expected status code 200.
Failed asserting that 401 is identical to 200.
Я не понимаю, почему аутентификация не удалась.

public function testPingApiController(): void
    {
        $username = 'Tanya Dovgan';
        $password = 'N7jKuXn97ReDKqxyxCQJ';
        $expectedBase64 = base64_encode("$username:$password");

        $authHeader = 'Basic ' . $expectedBase64;

        $this->client->setServerParameter('HTTP_Authorization', $authHeader);
        $this->client->setServerParameter('HTTP_Accept', 'application/json');

        $crawler = $this->client->request('GET', '/api/');

        var_dump($crawler->getUri());

        var_dump($this->client->getRequest()->headers->all());

        $response = $this->client->getResponse();
        var_dump($response->getContent());

        var_dump($response->getStatusCode());
        var_dump($response->headers->all());

        self::assertSame(Response::HTTP_OK, $response->getStatusCode(), 'Expected status code 200.');

        $content = $response->getContent();
        self::assertJson($content, 'Response is not valid JSON.');

        $responseData = json_decode($content, true);

        self::assertArrayHasKey('ack', $responseData, 'Response JSON does not contain the "ack" key.');
        self::assertArrayHasKey('datetime', $responseData, 'Response JSON does not contain the "datetime" key.');
        self::assertArrayHasKey('data', $responseData, 'Response JSON does not contain the "data" key.');

        self::assertIsInt($responseData['ack'], 'The "ack" key is not an integer.');
        self::assertGreaterThan(0, $responseData['ack'], 'The "ack" key is not a positive number.');
    }``


Я сделал много проверок, и тело ответа вернулось пустым.

Но во время этой проверки перед $response вы можете увидеть в списке заголовков

["authorization"]=>
array(1) {
[0]=>
string(50) "Basic VGFueWEgRG92Z2FuOk43akt1WG45N1JlREtxeHl4Q1FK"

Почему тогда пароль и логин не передаются, если заголовок авторизации есть? Как я могу это исправить? Помогите решить
  • Вопрос задан
  • 12 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы