Насмешка над набором запросов Django для тестирования функции, которая принимает набор запросов

Я просто хотел поделиться своим подходом, так как это могло бы помочь кому-то:

В основном я включил модуль JavaScript, который обрабатывает элементы аутентификации, такие как отображение имени пользователя, а также этот случай, обрабатывающий перенаправление на логин page.

Мой сценарий: у нас в основном есть ISA-сервер, между которым прослушиваются все запросы и отвечает 302 и заголовок местоположения на нашу страницу входа.

В моем модуле JavaScript мой первоначальный подход был чем-то вроде

$(document).ajaxComplete(function(e, xhr, settings){
    if(xhr.status === 302){
        //check for location header and redirect...
    }
});

. Проблема (как уже упоминалось выше) заключается в том, что браузер обрабатывает перенаправление самостоятельно, поэтому мой обратный вызов ajaxComplete никогда не вызывался, но вместо этого я получил ответ из уже перенаправленной страницы входа, которая, очевидно, была status 200. Проблема: как вы обнаруживаете, является ли успешный ответ 200 вашей фактической страницей входа или просто какой-либо другой произвольной страницей?

Решение

Поскольку я не смог захватить перенаправление 302 ответов, я добавил заголовок LoginPage на моей странице входа, в которой был URL-адрес самой страницы входа. В модуле я теперь слушаю заголовок и делаю перенаправление:

if(xhr.status === 200){
    var loginPageRedirectHeader = xhr.getResponseHeader("LoginPage");
    if(loginPageRedirectHeader && loginPageRedirectHeader !== ""){
        window.location.replace(loginPageRedirectHeader);
    }
}

... и работает как шарм :). Вы можете задаться вопросом, почему я включаю url в заголовок LoginPage ... ну в основном потому, что я не нашел способа определить URL-адрес GET в результате автоматического перенаправления местоположения с объекта xhr ...

30
задан Rory 9 September 2011 в 14:10
поделиться