Задать вопрос
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 просмотра
Подписаться 6 Оценить 2 комментария
Решения вопроса 1
MaksimSa
@MaksimSa Автор вопроса
Ломаю стены
Нашел решение проблемы, нужно просто лучше читать документацию. Для того, чтобы mock начал работать в качестве заглушки, нужно перед тестом выставить в конфиге:
OmniAuth.config.test_mode = true
Информацию взял из: https://github.com/omniauth/omniauth/wiki/Integrat...

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

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

Похожие вопросы
OTKLIK POWER Москва
от 80 000 до 150 000 ₽
Netwrk Буэнос-Айрес
от 5 000 до 7 500 $
от 6 000 до 8 000 $