Rails

Last-modified: 2011-03-22 (火) 11:44:01

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