Estoy comprobando un encabezado de solicitud para un token válido en mi middleware personalizado.
class CustomTokenAuthentication(object):
def process_request(self, request):
access_token = request.META.get("HTTP_TOKEN", "")
if AccessToken.objects.filter(token=access_token).exists():
return None
else:
# return None
res = HttpResponse("Invalid token", status=401)
res["WWW-Authenticate"] = "Invalid Token"
return res
parece funcionar bien, pero estoy atascado al escribir una prueba estableciendo un encabezado HTTP_TOKEN con un valor de token válido y obteniendo una respuesta de 200.
mi código de prueba de muestra
def test_invalid_token_present(self):
resp = self.client.get(reverse("productlist"), **{"HTTP_TOKEN":"8742627sdfsdfsf4e3423dsd23"})
self.assertEqual(resp.status_code,200)
Parece fallar siempre.
Respuestas
3 para la respuesta № 1Django cambia el nombre de CUSTOM-HEADER a HTTP_CUSTOM_HEADER. Cuando lo envíes HTTP_TOKEN
será renombrado a HTTP_HTTP_TOKEN
en el request.META
dictado Una forma sencilla de comprobar qué encabezados está obteniendo es imprimir request.META
y compruebe la consola o inserte un pdb
punto de quiebre justo antes de la comprobación y examinar el request.META
dict enlace a Django relevante doc. Así que prueba:
resp = self.client.get(reverse("productlist"),
**{"TOKEN":"8742627sdfsdfsf4e3423dsd23"})
Le aconsejo que limite la longitud de sus líneas, para que las personas no tengan que desplazarse horizontalmente para leer su código. PEP-8 prescribe un límite de 80 caracteres.