Prohibit duplicate memberships
This commit is contained in:
@@ -51,7 +51,7 @@ class JoinCodesControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
untenanted do
|
||||
assert_no_difference -> { Identity.count } do
|
||||
assert_difference -> { Membership.count }, 1 do
|
||||
assert_no_difference -> { Membership.count } do
|
||||
post join_path(tenant: @tenant, code: @join_code.code), params: { email_address: identity.email_address }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
require "test_helper"
|
||||
|
||||
class Memberships::EmailAddresses::ConfirmationsControllerTest < ActionDispatch::IntegrationTest
|
||||
test "show" do
|
||||
untenanted do
|
||||
membership = memberships(:kevin_in_37signals)
|
||||
|
||||
get email_address_confirmation_path(
|
||||
membership_id: membership.id,
|
||||
email_address_token: "dummy_token"
|
||||
)
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
test "create" do
|
||||
untenanted do
|
||||
membership = memberships(:kevin_in_37signals)
|
||||
old_identity = membership.identity
|
||||
new_email = "updated@example.com"
|
||||
|
||||
# Generate a real token
|
||||
token = membership.send(:generate_email_address_change_token, to: new_email)
|
||||
|
||||
assert_difference -> { Identity.count }, 1 do
|
||||
post email_address_confirmation_path(
|
||||
membership_id: membership.id,
|
||||
email_address_token: token
|
||||
),
|
||||
params: { email_address_token: token }
|
||||
end
|
||||
|
||||
membership.reload
|
||||
assert_equal new_email, membership.identity.email_address
|
||||
assert_not_equal old_identity.id, membership.identity_id
|
||||
|
||||
assert cookies[:session_token].present?, "Should have started new session"
|
||||
assert_redirected_to edit_user_url(script_name: "/#{membership.tenant}", id: membership.user)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,43 @@
|
||||
require "test_helper"
|
||||
|
||||
class Memberships::EmailAddressesControllerTest < ActionDispatch::IntegrationTest
|
||||
test "new" do
|
||||
untenanted do
|
||||
sign_in_as :kevin
|
||||
|
||||
membership = memberships(:kevin_in_37signals)
|
||||
|
||||
get new_email_address_path(membership_id: membership.id)
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
test "create" do
|
||||
untenanted do
|
||||
sign_in_as :kevin
|
||||
|
||||
membership = memberships(:kevin_in_37signals)
|
||||
|
||||
assert_enqueued_emails 1 do
|
||||
post email_addresses_path(membership_id: membership.id),
|
||||
params: { email_address: "newemail@example.com" }
|
||||
end
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
test "create with an email for someone already in the account" do
|
||||
untenanted do
|
||||
sign_in_as :kevin
|
||||
|
||||
membership = memberships(:kevin_in_37signals)
|
||||
|
||||
post email_addresses_path(membership_id: membership.id),
|
||||
params: { email_address: identities(:david).email_address }
|
||||
|
||||
assert_redirected_to new_email_address_path
|
||||
assert_equal "You already have a user in this account with that email address", flash[:alert]
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,30 @@
|
||||
require "test_helper"
|
||||
|
||||
class Memberships::UnlinkControllerTest < ActionDispatch::IntegrationTest
|
||||
test "show" do
|
||||
untenanted do
|
||||
sign_in_as :kevin
|
||||
|
||||
membership = memberships(:kevin_in_37signals)
|
||||
signed_id = membership.signed_id(purpose: :unlinking)
|
||||
|
||||
get unlink_membership_path(membership_id: signed_id)
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
test "create" do
|
||||
untenanted do
|
||||
sign_in_as :kevin
|
||||
|
||||
membership = memberships(:kevin_in_37signals)
|
||||
signed_id = membership.signed_id(purpose: :unlinking)
|
||||
|
||||
assert_difference -> { Membership.count }, -1 do
|
||||
post unlink_membership_path(membership_id: signed_id)
|
||||
end
|
||||
|
||||
assert_redirected_to session_menu_path
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user