diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index ad2797bb4..9a041d42a 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -3,6 +3,8 @@ class Users::SessionsController < Devise::SessionsController self.resource = resource_class.new if params.dig("user", "email").empty? resource.errors.add :email, "Please enter email address" + elsif !email_valid?(params.dig("user", "email")) + resource.errors.add :email, "Email addess is not valid" end if params.dig("user", "password").empty? resource.errors.add :password, "Please enter password" @@ -13,4 +15,10 @@ class Users::SessionsController < Devise::SessionsController super end end + +private + + def email_valid?(email) + email =~ URI::MailTo::EMAIL_REGEXP + end end diff --git a/spec/features/user_spec.rb b/spec/features/user_spec.rb index be6400b42..ccc2790f5 100644 --- a/spec/features/user_spec.rb +++ b/spec/features/user_spec.rb @@ -98,6 +98,15 @@ RSpec.describe "User Features" do expect(page).to have_selector("#user-email-field-error") expect(page).to have_selector("#user-password-field-error") end + + it "show specific field error messages if an invalid email address is entered" do + visit("/case_logs") + fill_in("user[email]", with: "thisisn'tanemail") + click_button("Sign in") + expect(page).to have_selector("#error-summary-title") + expect(page).to have_selector("#user-email-field-error") + expect(page).to have_content(/Email addess is not valid/) + end end context "Your Account " do