Ruby on Rails システムで、ログイン試行が x 回失敗した後にユーザーをロックアウトするケースをテストしようとしています。私が抱えている問題は、ユーザーを作成しようとして、アカウントを「ロック」する数に達したことです。私はファクトリを使用してユーザーを作成しています-
Factory.define :locked_user, :class => User do |user|
user.name "Test Lock"
user.email "lock@lock.com"
user.password "blah1234"
user.password_confirmation "blah1234"
user.login_count 5
end
5 は「マジック ナンバー」です。次のようなものを使用しようとすると
@user = Factory(:locked_user)
データベースにユーザーを作成しますが、新しく作成されたユーザーは常に login_count がゼロに設定されているため、テストにログインするだけです。.build メソッドを試してみると
@user = Factory.build(:locked_user)
私が望むようにユーザーをlogin_count = 5に設定しますが、ユーザーが有効であると見なされず、ログインしようとしません(つまり、「正しいユーザーではなく、「悪いユーザー/パスワード」エラーが表示されます) /password ですが、ロックアウトされています' エラー)。これは有効なユーザーであるがアカウントをロックする必要があるという事実をRSpecに認識させるために、ここに何かが欠けていると思います。誰かが私をまっすぐにするのを手伝ってくれますか? 以下は、desribe ブロック全体です。
describe "with locked account" do
before(:each) do
@user = Factory.build(:locked_user)
@attr = { :email => @user.email, :password => @user.password}
end
it "should not allow signin with locked account" do
post :create, :session => @attr
flash.now[:error].should =~ /Invalid user locked out/i
end
end