Тщательное интеграционное тестирование OAuth в Twitter в Rails - PullRequest
1 голос
/ 25 ноября 2011

Я пытаюсь написать интеграцию, которая тестирует весь процесс аутентификации Twitter.Каждый пример (кроме одного), который я нашел, предлагает высмеивать ответ, который я бы предпочел не делать.

Проблема

Приложение отправляет людейна страницу разрешения Twitter OAuth.Затем Twitter перенаправляет пользователя обратно в мое приложение, я получаю токен и продолжаю свой путь.

Вот тест, о котором идет речь:

it "should follow on twitter" do
  visit "/"
  click_link "Follow us on Twitter" # Sends them to the permission page
  fill_in "username_or_email", with: "secretaccount"
  fill_in "password", with: "secretpassword"
  click_button "Authorize app" # Where Twitter redirects back to my site
end

В процессе разработки Twitter перенаправляет обратно на local.host:3000 просто хорошо.Однако при тестировании он перенаправляет на www.example.com, что никак не связано с моим приложением.До этого момента все работает отлично.

Как я могу заставить Twitter перенаправить тестируемого в мое приложение в тестовой среде?

Что я использую

  • Капибара
  • Капибара-механизатор
  • Минитест
  • Рельсы 3.1.2
  • Рубин 1.9.2

Любая помощь будет потрясающей.Если я что-то пропустил, дайте мне знать.Спасибо!

1 Ответ

4 голосов
/ 12 января 2012

Капибара использует "www.example.com" в качестве хоста по умолчанию.Попробуйте добавить это в ваш spec_helper:

Capybara.config do |config|
  config.app_host = "http://localhost:3001"
end

Но вы должны фактически запустить сервер в порту 3001 во время тестирования, чтобы это работало.Capybara также поддерживает это

config.run_server = true
config.server_port = 3001

И вы также должны использовать драйвер, который использует этот сервер.По умолчанию используется стек стоек, поэтому используйте селен или веб-набор.

...