Вопрос

Я потратил чертовски много времени, пытаясь понять, как войти в систему и выйти из системы, используя объекты ответа из 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top