deviseの記憶に残る機能(remember me cookie)をテストするCucumber機能が欲しいのですが。
capybaraを使用して[rememberme]チェックボックスをオンにするのは簡単ですが、ウィンドウを閉じた後にサイトに戻るユーザーをどのようにシミュレートする必要がありますか?
deviseの記憶に残る機能(remember me cookie)をテストするCucumber機能が欲しいのですが。
capybaraを使用して[rememberme]チェックボックスをオンにするのは簡単ですが、ウィンドウを閉じた後にサイトに戻るユーザーをどのようにシミュレートする必要がありますか?
キュウリ/カピバラでDeviseのremember-me機能をテストするために、次のラックテストハックと、少しクリーンなセレンAPIの使用を思いつきました。セッション Cookie を手動で消去するようにドライバーに指示するだけです。すべてのドライバーがサポートされているわけではありません。使用した 2 つだけを実装しました。
これは、セッションの Cookie ストレージを想定しています。シナリオから @announce タグを削除して、冗長性を取り除きます。
Matt Wynne がメーリング リストのディスカッションで提案した別のオプションは、他の Cookie ストアを調べて、クエリまたはファイルの削除によってそれらを削除することです。
アジャイルレールブックから持ち上げた:
config.action_controller.session_store = CGI::Session::PStore (or just :p_store)
config.action_controller.session_options[:tmpdir] = "/Users/dave/tmp"
config.action_controller.session_options[:prefix] = "myapp_session_"
また
rake db:sessions:create
config.action_controller.session_store = :active_record_store
Rails にもリセット セッション メソッドがありますが、カピバラでテストするときに Rails セッションにフックできないため、これにアクセスできないと思います。
お役に立てれば、
ニック
nruth の要点は本当に役に立ちましたが、名前で Cookie を削除するのは不正行為のように感じました。ブラウザーを閉じて再起動したときにブラウザーが削除する Cookie を削除するステップを作成しました (有効期限が設定されておらず、将来設定されていない Cookie)。
このコミットで確認できます(ただし、Selenium をセットアップしていないため、RackTest ドライバーに対してのみ実行しました)。この commitで私の login/remember_me 機能も確認できます。そして、クラスをリファクタリングして、このコミットでファイルを分離しました。
お役に立てば幸いです。
これを実現するためにemail-specを使用しました。私のシナリオは次のようになります。
@allow-rescue
Scenario: Create New Account (Everything cool)
Given I am not authenticated
When I go to register
And I fill in "Name" with "bill"
And I fill in "Email" with "bill@example.com"
And I fill in "Password" with "please"
And I fill in "Password Confirmation" with "please"
And I press "Sign up"
Then "bill@example.com" should receive an email
And I open the email
And I should see "Confirm my account" in the email body
When I follow "Confirm my account" in the email
Then I should see "Your account was successfully confirmed. You are now signed in."
Deviseを使用するときに必要なシナリオの上の@allow-rescue装飾に注意してください。
お役に立てれば。
カピバラでログアウトしてから、次のようにログインし直すことができると思います
Given I am on the login screen
And I select 'Remember Me'
And I click 'login'
Then I should be 'logged in'
When I click 'log out'
Then I should be 'logged out' #=> potentially destroy a session here?
When I click log in
Then I should be logged in
And I should not be directed to the login form.
これは、cabybara の現在の Cookie 状態を使用して、このフローをモデル化する必要があります。