Я пытаюсь проверить случай в нашей системе 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 так, как я хочу, но затем не видит пользователя действительным и не пытается войти в него (т. Е. Он дает нам ошибку «неверный пользователь / пароль», а не ошибка «правильный пользователь / пароль, но вы заблокированы»). Я полагаю, что мне чего-то не хватает, чтобы RSpec обнаружил тот факт, что это действительный пользователь, но аккаунт должен быть заблокирован. Может кто-нибудь помочь мне разобраться? Ниже весь описанный блок-
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