2311efd03e
Previously if someone started signing in on their phone, but finished it on their laptop, they'd end up on the menu screen with no account. Bu tracking the purpose of a Magic Link we can always direct the user to sign up if they requested a magic link through sign up. This also makes the logic for changing the copy in the email more robust.
59 lines
1.8 KiB
Ruby
59 lines
1.8 KiB
Ruby
require "test_helper"
|
|
|
|
class Sessions::MagicLinksControllerTest < ActionDispatch::IntegrationTest
|
|
test "show" do
|
|
untenanted do
|
|
get session_magic_link_url
|
|
|
|
assert_response :success
|
|
end
|
|
end
|
|
|
|
test "create with sign in code" do
|
|
identity = identities(:kevin)
|
|
magic_link = MagicLink.create!(identity: identity)
|
|
|
|
untenanted do
|
|
post session_magic_link_url, params: { code: magic_link.code }
|
|
|
|
assert_response :redirect
|
|
assert cookies[:session_token].present?
|
|
assert_redirected_to landing_path, "Should redirect to after authentication path"
|
|
assert_not MagicLink.exists?(magic_link.id), "The magic link should be consumed"
|
|
end
|
|
end
|
|
|
|
test "create with sign up code" do
|
|
identity = identities(:kevin)
|
|
magic_link = MagicLink.create!(identity: identity, purpose: :sign_up)
|
|
|
|
untenanted do
|
|
post session_magic_link_url, params: { code: magic_link.code }
|
|
|
|
assert_response :redirect
|
|
assert cookies[:session_token].present?
|
|
assert_redirected_to new_signup_completion_path, "Should redirect to signup completion"
|
|
assert_not MagicLink.exists?(magic_link.id), "The magic link should be consumed"
|
|
end
|
|
end
|
|
|
|
test "create with invalid code" do
|
|
identity = identities(:kevin)
|
|
magic_link = MagicLink.create!(identity: identity)
|
|
|
|
untenanted do
|
|
post session_magic_link_url, params: { code: "INVALID" }
|
|
end
|
|
|
|
assert_response :redirect, "Invalid code should redirect"
|
|
|
|
expired_link = MagicLink.create!(identity: identity)
|
|
expired_link.update_column(:expires_at, 1.hour.ago)
|
|
|
|
post session_magic_link_url, params: { code: expired_link.code }
|
|
|
|
assert_response :redirect, "Expired magic link should redirect"
|
|
assert MagicLink.exists?(expired_link.id), "Expired magic link should not be consumed"
|
|
end
|
|
end
|