POST
リクエストを使用して送信されたトランザクションステータス情報を処理する必要がある(特に)Django Webアプリケーションを開発中です。面白いビジネスを予防しようとするsettings.py
のエントリに対する支払いゲートウェイでサポートされているHTTPのセキュリティに加えてDjangoテストでHTTP_REFERERヘッダを設定する
、私の見解をチェックrequest.META['HTTP_REFERER']
:
if request.META.get('HTTP_REFERER', '') != settings.PAYMENT_URL and not settings.DEBUG:
return HttpResponseForbidden('Incorrect source URL for updating payment status')
今、私がテストする方法をうまくしたいのですがこの動作。
私は失敗を簡単に生成することができます。 HTTP_REFERER
は(予想通り)通常のページのロードとNone
次のとおりです。
def test_transaction_status_succeeds(self):
response = self.client.post(reverse('transaction_status'), { ... })
self.assertEqual(response.status_code, 403)
どのように、しかし、私は偽の成功提出できますか?私はをextra
、に設定しようとしました。self.client.post(..., extra={'HTTP_REFERER': 'http://foo/bar'})
ですが、これは機能しません。ビューには明らかにまだ空白のヘッダーが表示されています。
テストクライアントはカスタムヘッダーをサポートしていますか?そうでなければ回避策はありますか?私はDjango 1.1を使用していますが、できるだけ早くアップグレードすることを好まないでしょう。
これはあなたの問題ではありませんでしたが、私が持っていた難しさを持っている他の人のために://ドキュメント:Djangoは、私は適切に文書[ここ](HTTPSとして自分の名前を変換していなかったので、私は、送信されたヘッダを認識していませんでした。 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'です。それらを変換した後、私は単に以下のsupervacuoの答えのように、それらをkwargsとして使うことができます。 –