Pergunta

Eu estava tendo muita dificuldade para descobrir como fazer login e logout usando objetos de resposta do Rails.Os blogs padrão estavam ok, mas finalmente consegui diagnosticar e queria registrar aqui.

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

Observe que o que foi dito acima implica que você redirecione após uma falha na solicitação de autenticação e também que você redirecione após fazer login.

Para garantir que você carregue os fixtures em seu banco de dados do ambiente de teste (o que normalmente ocorre durante o teste rake), certifique-se de executar o seguinte:

 rake db:fixtures:load RAILS_ENV=test

(De Patrick Richie) O URL padrão parecerá 'www.example.com', como este host padrão como definido no ActionController :: Integration :: Session

ActionController::Integration::Session.new.host=> "www.example.com"

Está definido em actionpack/lib/action_controller/integration.rb#75

Para alterá-lo no teste de integração, faça o seguinte:

session = open_session do |s|  s.host = 'my-example-host.com' end
Foi útil?

Solução

'www.example.com' é o host padrão conforme definido em ActionController::Integration::Session

>> ActionController::Integration::Session.new.host
=> "www.example.com"

Está definido em actionpack/lib/action_controller/integration.rb#75

Você poderá alterá-lo em seu teste de integração fazendo o seguinte:

session = open_session do |s|
  s.host = 'my-example-host.com'
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top