MaksimSa
@MaksimSa
Ломаю стены

Почему не проходит тест на авторизацию в oauth с правильным host?

Задача такая: протестировать авторизацию через facebook.

Проблема(сообщение, которое выскакивает при тестировании после события click_on):
Warning
Невозможно загрузить URL: Домен этого URL не включен в список доменов приложения. Чтобы загрузить этот URL, добавьте все домены и поддомены своего приложения в поле «Домены приложения» в настройках вашего приложения.

Код теста:
require 'acceptance_helper'

feature 'User sign in with oauth' do
  scenario 'can sign in user with Facebook account', :js do
    visit new_user_session_path
    expect(page).to have_content('Sign in with Facebook')
    mock_auth_hash_facebook

    click_on 'Sign in with Facebook'

    expect(page).to have_content I18n.t('devise.sessions.signed_in')
    expect(current_path).to eq root_path
  end
end

Код макроса:
module OmniauthMacros
  def mock_auth_hash_facebook
    OmniAuth.config.mock_auth[:facebook] = {
        provider: 'facebook',
        uid: '1234567',
        info: {
            email: 'user_example@facebook.com',
        },
        credentials: {
            token: 'mock_token',
            secret: 'mock_secret'
        }
    }
  end
end

Gemfile:
gem 'omniauth'
gem 'omniauth-facebook'


В настройках FB
URL-адрес сайта: localhost:3000
Пробовал выставлять порт 31337 и объявлять в тесте такой же порт, ничего не помогало

Прочитав сообщение проблемы, добавил хост 'localhost' в 'Домены приложений'.
При запуске теста проблема все равно появляется.
Но если выставить Capybara.server_host =31337 и поставить sleep, то 'вручную' все проходит и авторизуется.

Может я что-то упустил из виду? В чем может быть проблема?
  • Вопрос задан
  • 6473 просмотра
Решения вопроса 1
MaksimSa
@MaksimSa Автор вопроса
Ломаю стены
Нашел решение проблемы, нужно просто лучше читать документацию. Для того, чтобы mock начал работать в качестве заглушки, нужно перед тестом выставить в конфиге:
OmniAuth.config.test_mode = true
Информацию взял из: https://github.com/omniauth/omniauth/wiki/Integrat...

Использовать реальный запрос к facebook во время исполнения тестов не надо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы