Django自定义中间件来检查标头令牌。具有有效请求标头令牌的测试仍然失败

时间:2016-07-29 22:14:10

标签: django django-testing django-middleware django-tests

我正在检查自定义中间件中有效令牌的请求标头。

styles["men"]

似乎工作正常,但是我通过设置带有有效令牌值的标头HTTP_TOKEN并设置200响应来阻止编写测试。

我的样本测试代码

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

似乎总是失败。

1 个答案:

答案 0 :(得分:4)

Django将CUSTOM-HEADER重命名为HTTP_CUSTOM_HEADER。当您发送HTTP_TOKEN时,它会在HTTP_HTTP_TOKEN字典中重命名为request.META。检查标题的简单方法是打印request.META并检查控制台或在检查前插入pdb断点并检查request.META字典 - {{3} }。所以试试:

    resp = self.client.get(reverse('productlist'),
                           **{'TOKEN':'8742627sdfsdfsf4e3423dsd23'})

我建议您限制线路长度,这样人们就不必水平滚动来阅读您的代码。 PEP-8规定了80个字符的限制。