Настройка заголовка HTTP _REFERER в тесте Django

Я работаю над веб-приложением Django, которое (среди прочего )должно обрабатывать информацию о состоянии транзакции, отправленную с использованием запроса POST.

В дополнение к безопасности 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 и предпочел бы пока не обновляться, если это вообще возможно.

11
задан supervacuo 5 August 2012 в 19:31
поделиться