Заголовки 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
)