Bir Django web uygulaması üzerinde çalışıyorum (diğer şeyler arasında), bir POST
isteği kullanılarak gönderilen işlem durumu bilgisini işlemek için.Django testinde HTTP_REFERER başlığını ayarlama
if request.META.get('HTTP_REFERER', '') != settings.PAYMENT_URL and not settings.DEBUG:
return HttpResponseForbidden('Incorrect source URL for updating payment status')
Şimdi sınamak için nasıl çalışmak istiyorum: settings.py
bir giriş karşı
, benim bakış çekleri request.META['HTTP_REFERER']
komik iş önlemek için denemek için Bu davranış
Yeterli bir hata yapabilirim;
def test_transaction_status_succeeds(self):
response = self.client.post(reverse('transaction_status'), { ... })
self.assertEqual(response.status_code, 403)
Nasıl olsa da, can sahte başarılı bir gönderme: HTTP_REFERER
(tahmin) normal sayfa yüküyle None
mı? HTTP_REFERER
'u extra
, adresinden ayarlamayı denedim.self.client.post(..., extra={'HTTP_REFERER': 'http://foo/bar'})
, fakat bu çalışmıyor; görünüşte görünüşe göre hala boş bir başlık görüyor.
Test istemcisi özel üstbilgileri bile destekliyor mu? Yoksa bir iş var mı? Django 1.1 kullanıyorum ve henüz mümkün değilse henüz yükseltmemeyi tercih ederim. Neredeyse haklı olarak
Bu sizin sorununuz değildi, ancak zorlukla karşılaştığım başkaları için: Django, gönderdiğim başlıkları tanımıyordu çünkü isimlerini belgelendirilmiş olarak doğru şekilde dönüştürmedim (https: // docs. [CGI belirtimini] açıkladığı gibi (http://tools.ietf.org/html/draft-robinson- www-arayüz-00 # sayfa-8). Örneğin, 'X-CSRFToken'' HTTP_X_CSRFTOKEN' olacaktır. Onları değiştirdikten sonra, onları denetçinin aşağıdaki cevabındaki gibi kwargs olarak kullanabilirim. –