Reinstate email changes

This commit is contained in:
Stanko K.R.
2025-11-14 08:33:00 +01:00
committed by Mike Dalessio
parent 4d8b3ed719
commit 56c41d45eb
14 changed files with 230 additions and 14 deletions
@@ -0,0 +1,35 @@
require "test_helper"
class Users::EmailAddresses::ConfirmationsControllerTest < ActionDispatch::IntegrationTest
setup do
@user = users(:david)
@new_email = "newemail@example.com"
@token = @user.send(:generate_email_address_change_token, to: @new_email)
end
test "show" do
untenanted do
get user_email_address_confirmation_path(user_id: @user.id, email_address_token: @token)
assert_response :success
end
end
test "create" do
old_email = @user.identity.email_address
untenanted do
post user_email_address_confirmation_path(user_id: @user.id, email_address_token: @token)
assert_equal @new_email, @user.reload.identity.email_address
assert_redirected_to edit_user_url(script_name: @user.account.slug, id: @user)
end
end
test "create with invalid token" do
untenanted do
assert_raises(ArgumentError) do
post user_email_address_confirmation_path(user_id: @user.id, email_address_token: "invalid")
end
end
end
end
@@ -0,0 +1,48 @@
require "test_helper"
class Users::EmailAddressesControllerTest < ActionDispatch::IntegrationTest
include ActionMailer::TestHelper
setup do
sign_in_as :david
@user = users(:david)
end
test "new" do
untenanted do
get new_user_email_address_path(@user)
assert_response :success
end
end
test "create" do
untenanted do
assert_emails 1 do
post user_email_addresses_path(@user), params: { email_address: "newemail@example.com" }
end
assert_response :success
end
end
test "create with existing email in same account" do
existing_user = users(:kevin)
existing_email = existing_user.identity.email_address
untenanted do
post user_email_addresses_path(@user), params: { email_address: existing_email }
assert_redirected_to new_user_email_address_path(@user)
assert_equal "You already have a user in this account with that email address", flash[:alert]
end
end
test "create for other user" do
other_user = users(:kevin)
untenanted do
assert_no_emails do
post user_email_addresses_path(other_user), params: { email_address: "newemail@example.com" }
end
assert_response :not_found
end
end
end