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