我正在使用django rest_framework并使用一个API,该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问题是当我试图从头获取Signature签名时。我试过:
ret = request.headers.get("X-Extserv-Signature") 只有当我收到邮递员的请求时,这种方式才能奏效。但是,当我执行来自APIClient的请求时,下面的表单可以工作,并且无法使用相同的代码获得值。
ret = request.META["X-Extserv-Signature"]您知道如何将X-Extserv-Signature键值设置为APIClient中的标头吗?
发布于 2021-08-30 01:59:53
来自
一个不区分大小写的、类似于dict的对象,它提供对所有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
)https://stackoverflow.com/questions/68977033
复制相似问题