/ / El middleware personalizado de Django para verificar el token de encabezado. Las pruebas con tokens de encabezado de solicitud válida aún fallan: django, django-testing, django-middleware, django-tests

El middleware personalizado de Django comprueba el token del encabezado. Las pruebas con tokens válidos del encabezado aún fallan: django, django-testing, django-middleware, django-tests

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 № 1

Django 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.