Моя задача — создать фикстуру и создать тест, проверяющий 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"
Почему тогда пароль и логин не передаются, если заголовок авторизации есть? Как я могу это исправить? Помогите решить