Заголовки APIClient для тестирования

Я работаю с django rest_framework и использую API, который предоставляет значение заголовка для проверки отправителя. У меня возникла проблема, когда я использую APIClient для проверки созданного мной веб-хука.

@pytest.mark.django_db
def test_change_status_webhook_ok(webhook_client, status_changes):
    fixture_signature = (
        "51b93156c361bfce14c527ddcb27cc3791e9ea6ede23bc5a56efa3be28e6a54d"
    )

    url = reverse("webhook_v1:notification")
    response = webhook_client.post(
        url,
        json.dumps(status_changes),
        content_type="application/json",
        **{"X-Extserv-Signature": fixture_signature}
    )

    assert response.status_code == 200

Проблема возникла, когда я попытался получить X-Extserv-Signature из заголовков. Я пробовал использовать:

ret = request.headers.get("X-Extserv-Signature")            

Этот способ работает только когда я получаю запрос от postman... но форма ниже работает, когда я делаю запрос от APIClient и не могу получить значение, используя тот же вышеприведенный код.

ret = request.META["X-Extserv-Signature"]

Вы знаете, как я могу установить значение ключа X-Extserv-Signature для заголовков в APIClient?

От docs:

Нечувствительный к регистру диктоподобный объект, предоставляющий доступ ко всем HTTP-префиксным заголовкам

.

request.headers будет содержать только те заголовки, которые являются HTTP-префиксом, так:

    response = webhook_client.post(
        url,
        json.dumps(status_changes),
        content_type="application/json",
        **{"HTTP_X_EXTSERV_SIGNATURE": fixture_signature} # <-- Use this
    )
Вернуться на верх