CucumberでDeviseをつかったOpenIDのログイン/ログアウトをテストする
cucumber上はwabratがうごいていて、いってみればブラウザのようなものなので、sign_in や login_as といったテストヘルパはつかえない。
リアルタイムに authenticate! メソッドをうわがきする方法をみつけた。
ログアウト時に nil をかえすようにオーバーロードしているのは、 success をかえすようにすると常にログインしっぱなしになってしまうから。
前提 /^ログインしている$/ do visit new_user_session_path Warden::OpenID::Strategy.class_eval do def authenticate! success!(User.find_by_identity_url("http://www.example.com/TestUser2")) end end fill_in("openid_identifier", :with=>"http://www.example.com/id2") click_button("Login") end
前提 /^ログアウトしている$/ do Warden::OpenID::Strategy.class_eval do def authenticate! return nil end end visit destroy_user_session_path end