Как проверить вход в Rails с консоли?
-
09-06-2019 - |
Вопрос
Я потратил чертовски много времени, пытаясь понять, как войти в систему и выйти из системы, используя объекты ответа из Rails.Стандартные блоги были в порядке, но я, наконец, диагностировал это и захотел записать это здесь.
app.get '/'
assert_response :success
app.get '/auth_only_url'
assert_response 302
user = User.find(:user_to_login)
app.post '/signin_url',
:user_email => user.email,
:user_password => '<password in clear>'
assert_response 302
app.follow_redirect!
assert_response :success
app.get '/auth_only_url'
assert_response :success
Обратите внимание: вышеизложенное подразумевает, что вы перенаправляете после неудачного запроса аутентификации, а также перенаправляете после входа в систему.
Чтобы гарантировать загрузку фикстур в базу данных тестовой среды (что обычно происходит во время rake-теста), убедитесь, что вы выполнили следующее:
rake db:fixtures:load RAILS_ENV=test
(От Патрика Ричи) URL -адрес по умолчанию будет показан «www.example.com», как этот хост по умолчанию, как установлено в ActionController :: Integration :: Session
ActionController::Integration::Session.new.host=> "www.example.com"
Он установлен в actionpack/lib/action_controller/integration.rb#75.
Чтобы изменить его в интеграционном тесте, сделайте следующее:
session = open_session do |s| s.host = 'my-example-host.com' end
Решение
«www.example.com» — это хост по умолчанию, заданный в ActionController::Integration::Session.
>> ActionController::Integration::Session.new.host
=> "www.example.com"
Он установлен в actionpack/lib/action_controller/integration.rb#75.
Вы сможете изменить его в своем интеграционном тесте, выполнив следующие действия:
session = open_session do |s|
s.host = 'my-example-host.com'
end