POST
요청을 사용하여 전송 된 트랜잭션 상태 정보를 처리해야하는 장고 웹 응용 프로그램에서 작업하고 있습니다.Django 테스트에서 HTTP_REFERER 헤더 설정
if request.META.get('HTTP_REFERER', '') != settings.PAYMENT_URL and not settings.DEBUG:
return HttpResponseForbidden('Incorrect source URL for updating payment status')
지금 내가 테스트하는 방법을 해결하고 싶습니다 : settings.py
의 항목에 대한
, 내보기 검사 request.META['HTTP_REFERER']
재미 사업을 방지하기 위해 시도 이 행동.
나는 쉽게 오류를 생성 할 수 있습니다.
def test_transaction_status_succeeds(self):
response = self.client.post(reverse('transaction_status'), { ... })
self.assertEqual(response.status_code, 403)
방법,하지만, 수 나는 가짜 성공적인 제출 : HTTP_REFERER
는 (예상) 일반 페이지로드와 None
입니까? 나는 을 extra
, 에 설정하려고 시도했습니다.self.client.post(..., extra={'HTTP_REFERER': 'http://foo/bar'})
,하지만 이것은 작동하지 않습니다. 보기에는 여전히 빈 헤더가 표시됩니다.
테스트 클라이언트는 사용자 지정 헤더도 지원합니까? 문제가 해결되지 않았습니까? 나는 Django 1.1을 사용하고 있으며, 가능하다면 업그레이드하지 않는 것을 선호한다.
이것은 문제가 아니지만 어려움을 겪고있는 다른 사람들을 위해 : Django는 내가 보낸 헤더를 인식하지 못했습니다. 문서의 이름을 제대로 변환하지 않았기 때문에 (https : // docs. djangoproject.com/en/1.6/topics/testing/tools/#django.test.client.Client.get), [CGI 규격에 설명 된] (http://tools.ietf.org/html/draft-robinson- www-interface-00 # page-8). 예를 들어'X-CSRFToken'은'HTTP_X_CSRFTOKEN'입니다. 그 (것)들을 변형 한 후에 나는 superwacuo의 응답에서 것과 같이 아래에 kwargs로 간단하게 이용할 수 있었다. –