diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 31ca0006fd..5335f58f3d 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -9,11 +9,16 @@ def new end def create - if identity = Identity.find_by_email_address(email_address) - magic_link = identity.send_magic_link - serve_development_magic_link(magic_link) + identity = Identity.find_by_email_address(email_address) + + magic_link = if identity + identity.send_magic_link + else + Signup.new(email_address: email_address).create_identity end + serve_development_magic_link(magic_link) + redirect_to session_magic_link_path end diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb index 9dbcc770d9..f2318bf464 100644 --- a/test/controllers/sessions_controller_test.rb +++ b/test/controllers/sessions_controller_test.rb @@ -24,12 +24,15 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest test "create for a new user" do untenanted do - assert_no_difference -> { MagicLink.count } do - post session_path, - params: { email_address: "nonexistent-#{SecureRandom.hex(6)}@example.com" } + assert_difference -> { MagicLink.count }, +1 do + assert_difference -> { Identity.count }, +1 do + post session_path, + params: { email_address: "nonexistent-#{SecureRandom.hex(6)}@example.com" } + end end assert_redirected_to session_magic_link_path + assert MagicLink.last.for_sign_up? end end