2008-09-04 18 views
6

Tôi đã có một thời gian để tìm cách đăng nhập và đăng xuất bằng cách sử dụng các đối tượng phản hồi từ Rails. Các blog chuẩn là ok, nhưng cuối cùng tôi đã chẩn đoán nó, và tôi muốn ghi lại nó ở đây.Làm cách nào để kiểm tra Rails Logging In from the Console?

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 

Note, của nó ở trên mà bạn chuyển hướng sau khi một yêu cầu auth thất bại, và cũng là bạn chuyển hướng sau khi đăng nhập.

Để đảm bảo rằng bạn nạp các fixture trong môi trường thử nghiệm của bạn DB (mà thường xảy ra trong quá trình thử cào), chắc chắn rằng bạn thực hiện như sau:

rake db:fixtures:load RAILS_ENV=test 

(Từ Patrick Richie) URL mặc định sẽ xuất hiện để được 'www.example.com', như máy chủ mặc định này như quy định trong ActionController :: Tích hợp :: Phiên

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

Nó được đặt trong actionpack/lib/action_controller/integration.rb # 75

Để thay đổi nó trong các thử nghiệm hội nhập, làm như sau:

session = open_session do |s| s.host = 'my-example-host.com' end 

Trả lời

2

'www.example. com 'là máy chủ lưu trữ mặc định được đặt trong ActionController :: Integration :: Session

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

Nó được đặt trong actionpack/lib/action_controller/i ntegration.rb # 75

Bạn sẽ có thể thay đổi nó trong thử nghiệm hội nhập của bạn bằng cách làm như sau:

session = open_session do |s| 
    s.host = 'my-example-host.com' 
end 
Các vấn đề liên quan