Токен CSRF не определен при использовании транспортира для тестирования страницы AngularJS

Я тестирую страницу регистрации, где пользователь отправляет адрес электронной почты и пароль.

Он работает так, как должен, когда я тестирую страницу вручную. Проблема в том, что когда protractor открывает URL-адрес, CSRF-токен undefined

 ptor.get('http://localhost:8000/client#/rmc');

В моем контроллере углового регистра я установил токен CSRF для сообщения следующим образом:

 $http.defaults.headers.common["X-CSRFToken"] = $cookies.csrftoken;

Есть ли что-то особенное в том, как транспортир получает страницу или как он инициализирует угловое приложение?

(Я использую промежуточное ПО Django CSRF по умолчанию и тестовый сервер Django)


person ddd    schedule 30.03.2014    source источник


Ответы (1)


Отвечая на мой собственный вопрос:

Проблема была не в транспортире/тестировании. В моем браузере есть несколько старых оставшихся файлов cookie, которые angular использовал, когда я проверял страницу вручную. Настоящая проблема заключалась в том, что я больше не отправлял файлы cookie. Вероятно, это хорошая причина, чтобы провести сквозное тестирование с самого начала.

person ddd    schedule 31.03.2014
comment
не могли бы вы сообщить мне, как вы справляетесь с этим в Django? Не конкретно эта проблема, а Django и Protractor подыгрывают - person Antonio Laguna; 07.05.2014
comment
@Antonio Laguna Не уверен, что ты имеешь в виду под подыгрыванием. Чтобы настроить его, я следовал официальным инструкциям и запускал protractor вместе со стандартным локальным тестовым сервером django. Но вы также можете запустить тесты транспортира на промежуточном или реальном сайте. Если ваш вопрос о том, как работать с авторизованными пользователями: в Protractor нет специальной функции для этого. Вы должны зарегистрировать нового пользователя или использовать ранее созданного и позволить транспортиру заполнить форму входа. (для этого нет быстрого метода входа в систему, например, с тестовым клиентом django) - person ddd; 07.05.2014