Django自定义中间件用于检查标头令牌。使用有效的请求标头令牌进行测试仍然失败
我正在检查自定义中间件中的请求头是否有有效令牌Django自定义中间件用于检查标头令牌。使用有效的请求标头令牌进行测试仍然失败,django,django-testing,django-middleware,django-tests,Django,Django Testing,Django Middleware,Django Tests,我正在检查自定义中间件中的请求头是否有有效令牌 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:
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
似乎工作得很好,但我坚持写一个测试,通过设置一个带有有效令牌值的头HTTP_令牌并获得一个200响应
我的示例测试代码
def test_invalid_token_present(self):
resp = self.client.get(reverse('productlist'), **{'HTTP_TOKEN':'8742627sdfsdfsf4e3423dsd23'})
self.assertEqual(resp.status_code,200)
似乎总是失败 Django将CUSTOM-HEADER重命名为HTTP_CUSTOM_HEADER。当您发送它时,
HTTP\u令牌
将在request.META
dict中重命名为HTTP\u令牌
。一种简单的方法是在检查和检查前打印request.META
并检查控制台或插入一个pdb
断点request.META
dict-。因此,请尝试:
我建议您限制行长度,这样人们就不必水平滚动来阅读代码。PEP-8规定了80个字符的限制。在发送请求时尝试
HTTP-TOKEN
。抱歉,尝试使用TOKEN
instead仍然会失败@热切Noobc您可以打印request.META.keys()
的内容并进行检查。我的意思是在请求中尝试标头TOKEN
。我真的试过了。如果它不起作用,那么我们必须查看request.META
的内容。
resp = self.client.get(reverse('productlist'),
**{'TOKEN':'8742627sdfsdfsf4e3423dsd23'})