2013-03-28 16 views
5

Sử dụng OmniAuth (với omniauth_crowd), tôi muốn người dùng được chuyển hướng trở lại trang đăng nhập nếu anh ấy không gửi đúng tên người dùng và mật khẩu. Nó hoạt động tốt trong sản xuất, nhưng tôi có vấn đề khó chịu thử nghiệm nó.Capybara :: InfiniteRedirectError

Để nhạo báng nhà cung cấp OmniAuth, tôi sử dụng đoạn mã sau, theo khuyến cáo của các tác giả của OmniAuth plugin:

OmniAuth.config.test_mode = true 
OmniAuth.config.mock_auth[:someProvider] = :invalid_credentials 
visit_page @page 

Đoạn mã trên sẽ tự động (ví dụ mà không cần nhập username và password) chuyển hướng Capybara đến session#failure. My session#failure chuyển hướng đến login_path.

Vì vậy tôi kết thúc trong một vòng lặp:

redirected more than 5 times, check for infinite redirects. (Capybara::InfiniteRedirectError) 

hiện giải pháp tốt nhất cho trường hợp của tôi là gì?

Trả lời

1

Tôi gặp sự cố mô phỏng với Omniauth.
Không chắc chắn nếu có cách giải quyết khác, vì đó là cách hoạt động của OmniAuth.config.mock_auth.

Giải pháp của tôi là sử dụng fakeweb thay vì chế nhạo OmniAuth.
Có lẽ bạn nên bắt đầu bằng cách xem xét cách omniauth_crowd được tự kiểm tra.
Dưới đây là ví dụ tốt: https://github.com/robdimarco/omniauth_crowd/blob/master/spec/omniauth/strategies/crowd_spec.rb#L49-69

Các vấn đề liên quan