/ / Як я знущаюся з хешу OmniAuth за допомогою Rails та minitest? - рубін-на-рейки, глузуючий, рубіно-на-рейки-5, омне, мінімум

Як я можу придумати хеш OmniAuth за допомогою Rails та minitest? - рубіни на рельсах, знущання, рубін на рейках-5, омнайт, мініатст

Я використовую Rails 5 з мінімумом. Я хочу змусити входити в свій контролер сеансів, який покладається на всезнайко (я використовую Google і FB для входу). Я маю це у своєму тесті контролера, тесту / контролерів / rate_controller_test.rb,

 class RatesControllerTest < ActionDispatch::IntegrationTest

# Login the user
def setup
logged_in_user = users(:one)
login_with_user(logged_in_user)
end

а потім я спробую встановити логін у своєму тест-помічнику, test / test_helper.rb,

class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all

def setup_omniauth_mock(user)
OmniAuth.config.test_mode = true
omniauth_hash = { "provider" => "google",
"uid" => "12345",
"info" => {
"name" => "#{user.first_name} #{user.last_name}",
"email" => user.email,
},
"extra" => {"raw_info" =>
{ "location" => "San Francisco",
"gravatar_id" => "123456789"
}
}
}

OmniAuth.config.add_mock(:google, omniauth_hash)
end

# Add more helper methods to be used by all tests here...
def login_with_user(user)
setup_omniauth_mock(user)
post sessions_path
end

Однак, коли я запускаю тест контролера, я отримую нульове значення, коли цей рядок оцінюється в моєму контролері сеансів ...

user = User.from_omniauth(env["omniauth.auth"])

Вище "env [" omniauth.auth "]" оцінюється до нуля.

Відповіді:

0 для відповіді № 1

The Документи OmniAuth держава

Коли ви намагаєтеся перевірити OmniAuth, вам потрібно встановити дві змінних env

і навести приклади, використовуючи RSpec

before do
Rails.application.env_config["devise.mapping"] = Devise.mappings[:user] # If using Devise
Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:twitter]
end

У вашому випадку, здається, вам може знадобитися встановити

Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:google]

в твоїй setup_omniauth_mock метод після дзвінка до OmniAuth.config.add_mock.