私は、(とりわけ)POST
リクエストを使用して送信されたトランザクションステータス情報を処理する必要がある Django Web アプリケーションに取り組んでいます。
ペイメント ゲートウェイでサポートされている HTTP セキュリティに加えて、私のビューはrequest.META['HTTP_REFERER']
エントリに対してチェックを行い、settings.py
おかしなビジネスを防止しようとします。
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)
しかし、どうすれば提出が成功したと偽ることができますか? たとえば、HTTP_REFERER
で設定しようとしましたが、これは機能しません。ビューにはまだ空白のヘッダーが表示されているようです。extra
self.client.post(..., extra={'HTTP_REFERER': 'http://foo/bar'})
テスト クライアントはカスタム ヘッダーもサポートしていますか? そうでない場合の回避策はありますか?私は Django 1.1 を使用していますが、可能であればまだアップグレードしたくありません。