Тестовое приложение, в котором я работаю, имеет стандартную аутентификацию в стиле session[:user_id]=user.id
. Я использую Fabricator для проверки назначения user.id
хэшу сеанса. Когда я использую Fabricator, метод user.authenticate
дает сбой, но когда я вручную передаю учетные данные без использования Fabricator, тест проходит успешно.
Я поставил binding.pry
в действие создания контроллера сеанса, и я определенно могу получить доступ как к электронной почте, так и к паролю, когда я их вызываю, и все же функция «аутентификации» не работает. Почему это?
Контрольная работа:
it "assigns user.id to session hash" do
johndoe=Fabricate(:user)
puts johndoe.email
puts johndoe.password
post :create, email: johndoe.email, password: johndoe.password
expect(session[:user_id]).to eq(april.id)
end
Контроллер:
def create
binding.pry
user=User.find_by(email:params["email"])
if user && user.authenticate(params[params["password"]])
session[:user_id]=user.id
flash[:success]="You have successfully signed in."
redirect_to videos_path
else
flash[:danger]="There was something wrong with your email address or password."
render 'new'
end
end