Fix tests after the removal of memberships
This commit is contained in:
committed by
Mike Dalessio
parent
8fa9566c07
commit
34d83aaa7c
@@ -9,9 +9,8 @@ module ApplicationCable
|
||||
private
|
||||
def set_current_user
|
||||
if session = find_session_by_cookie
|
||||
account = Account.find(request.env["fizzy.external_account_id"])
|
||||
user = session.identity.user.find_by!(account: account)
|
||||
self.current_user = user if user.active?
|
||||
account = Account.find_by(external_account_id: request.env["fizzy.external_account_id"])
|
||||
self.current_user = session.identity.users.find_by!(account: account) if account
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -2,24 +2,24 @@ class Users::EmailAddresses::ConfirmationsController < ApplicationController
|
||||
disallow_account_scope
|
||||
allow_unauthenticated_access
|
||||
|
||||
before_action :set_membership
|
||||
before_action :set_user
|
||||
rate_limit to: 5, within: 1.hour, only: :create
|
||||
|
||||
def show
|
||||
end
|
||||
|
||||
def create
|
||||
membership = Membership.change_email_address_using_token(token)
|
||||
user = User.change_email_address_using_token(token)
|
||||
|
||||
terminate_session if Current.session
|
||||
start_new_session_for membership.reload.identity
|
||||
start_new_session_for user.reload.identity
|
||||
|
||||
redirect_to edit_user_url(script_name: "/#{@membership.tenant}", id: @membership.user)
|
||||
redirect_to edit_user_url(script_name: user.account.slug, id: user)
|
||||
end
|
||||
|
||||
private
|
||||
def set_membership
|
||||
@membership = Membership.find(params[:membership_id])
|
||||
def set_user
|
||||
@user = User.find(params[:user_id])
|
||||
end
|
||||
|
||||
def token
|
||||
|
||||
@@ -3,7 +3,7 @@ class Users::EmailAddressesController < ApplicationController
|
||||
|
||||
layout "public"
|
||||
|
||||
before_action :set_membership
|
||||
before_action :set_user
|
||||
rate_limit to: 5, within: 1.hour, only: :create
|
||||
|
||||
def new
|
||||
@@ -12,17 +12,17 @@ class Users::EmailAddressesController < ApplicationController
|
||||
def create
|
||||
identity = Identity.find_by_email_address(new_email_address)
|
||||
|
||||
if identity&.memberships&.exists?(tenant: @membership.tenant)
|
||||
if identity&.users&.exists?(account: @user.account)
|
||||
flash[:alert] = "You already have a user in this account with that email address"
|
||||
redirect_to new_email_address_path
|
||||
redirect_to new_user_email_address_path(@user)
|
||||
else
|
||||
@membership.send_email_address_change_confirmation(new_email_address)
|
||||
@user.send_email_address_change_confirmation(new_email_address)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def set_membership
|
||||
@membership = Current.identity.memberships.find(params[:membership_id])
|
||||
def set_user
|
||||
@user = Current.identity.users.find(params[:user_id])
|
||||
end
|
||||
|
||||
def new_email_address
|
||||
|
||||
+1
-1
@@ -1,8 +1,8 @@
|
||||
class Board < ApplicationRecord
|
||||
include Accessible, AutoPostponing, Broadcastable, Cards, Entropic, Filterable, Publishable, Triageable
|
||||
|
||||
belongs_to :account, default: -> { creator.account }
|
||||
belongs_to :creator, class_name: "User", default: -> { Current.user }
|
||||
belongs_to :account, default: -> { creator.account }
|
||||
|
||||
has_rich_text :public_description
|
||||
|
||||
|
||||
+10
-2
@@ -7,8 +7,16 @@ class Current < ActiveSupport::CurrentAttributes
|
||||
def session=(value)
|
||||
super(value)
|
||||
|
||||
if value.present? && Current.account.present?
|
||||
self.user = identity.users.find_by(account: Current.account)
|
||||
if value.present? && account.present?
|
||||
self.user = identity.users.find_by(account: account)
|
||||
end
|
||||
end
|
||||
|
||||
def account=(value)
|
||||
super(value)
|
||||
|
||||
if value.present? && identity.present?
|
||||
self.user = identity.users.find_by(account: value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ class User < ApplicationRecord
|
||||
def deactivate
|
||||
transaction do
|
||||
accesses.destroy_all
|
||||
update! active: false
|
||||
update! active: false, identity: nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<div class="flex align-center gap">
|
||||
<div class="flex align-center gap input input--actor">
|
||||
<%= form.email_field :email_address, class: "input full-width", autocomplete: "username", placeholder: "Email address", required: true, readonly: true, value: @user.identity.email_address %>
|
||||
<%= link_to "Change email", new_email_address_url(script_name: nil, user_id: Current.user.id), class: "btn btn--plain txt-link txt-small txt-nowrap" %>
|
||||
<%= link_to "Change email", new_user_email_address_url(script_name: nil, user_id: Current.user.id), class: "btn btn--plain txt-link txt-small txt-nowrap" %>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" id="log_in" class="btn btn--reversed center" data-form-target="submit">
|
||||
|
||||
+4
-6
@@ -14,6 +14,10 @@ Rails.application.routes.draw do
|
||||
resource :events
|
||||
|
||||
resources :push_subscriptions
|
||||
|
||||
resources :email_addresses, param: :token do
|
||||
resource :confirmation, module: :email_addresses
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -147,12 +151,6 @@ Rails.application.routes.draw do
|
||||
|
||||
resource :landing
|
||||
|
||||
scope module: :memberships, path: "memberships/:membership_id" do
|
||||
resources :email_addresses, param: :token do
|
||||
resource :confirmation, module: :email_addresses
|
||||
end
|
||||
end
|
||||
|
||||
namespace :my do
|
||||
resources :pins
|
||||
resource :timezone
|
||||
|
||||
@@ -7,16 +7,11 @@ class Signup::CompletionsControllerTest < ActionDispatch::IntegrationTest
|
||||
@signup.create_identity || raise("Failed to create identity")
|
||||
|
||||
sign_in_as @signup.identity
|
||||
|
||||
@signup.create_membership || raise("Failed to create membership")
|
||||
end
|
||||
|
||||
test "new" do
|
||||
untenanted do
|
||||
get saas.new_signup_completion_path(signup: {
|
||||
membership_id: @signup.membership_id,
|
||||
full_name: @signup.full_name,
|
||||
account_name: @signup.account_name })
|
||||
get saas.new_signup_completion_path
|
||||
end
|
||||
|
||||
assert_response :success
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
require "test_helper"
|
||||
|
||||
class Signup::MembershipsControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@identity = Identity.create!(email_address: "newuser@example.com")
|
||||
magic_link = @identity.send_magic_link
|
||||
|
||||
untenanted do
|
||||
post session_magic_link_url, params: { code: magic_link.code }
|
||||
assert_response :redirect, "Magic link should succeed"
|
||||
|
||||
cookie = cookies.get_cookie "session_token"
|
||||
assert_not_nil cookie, "Expected session_token cookie to be set after magic link consumption"
|
||||
end
|
||||
end
|
||||
|
||||
test "new" do
|
||||
untenanted do
|
||||
get saas.new_signup_membership_path
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
test "new with new_user param" do
|
||||
untenanted do
|
||||
get saas.new_signup_membership_path(signup: { new_user: true })
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
test "create" do
|
||||
untenanted do
|
||||
assert_difference -> { Membership.count }, 1 do
|
||||
post saas.signup_membership_path, params: {
|
||||
signup: {
|
||||
full_name: "New User"
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
membership = Membership.last
|
||||
assert_redirected_to saas.new_signup_completion_path(
|
||||
signup: {
|
||||
membership_id: membership.signed_id(purpose: :account_creation),
|
||||
full_name: "New User",
|
||||
account_name: "New's Fizzy"
|
||||
}
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
test "create with invalid params" do
|
||||
untenanted do
|
||||
assert_no_difference -> { Membership.count } do
|
||||
post saas.signup_membership_path, params: {
|
||||
signup: {
|
||||
full_name: ""
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
assert_response :unprocessable_entity, "Invalid params should return unprocessable entity"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -11,34 +11,39 @@ class Signup::AccountNameGeneratorTest < ActiveSupport::TestCase
|
||||
account_name = @generator.generate
|
||||
assert_equal "Newart's Fizzy", account_name, "The 1st account doesn't have 1st in the name"
|
||||
|
||||
first_membership = @identity.memberships.create(tenant: "1st")
|
||||
first_membership.stubs(:account_name).returns(account_name)
|
||||
first_account = Account.create!(external_account_id: "1st", name: account_name)
|
||||
@identity.users.create!(account: first_account, name: @name)
|
||||
@identity.reload
|
||||
|
||||
account_name = @generator.generate
|
||||
assert_equal "Newart's 2nd Fizzy", account_name
|
||||
|
||||
second_membership = @identity.memberships.create(tenant: "2nd")
|
||||
second_membership.stubs(:account_name).returns(account_name)
|
||||
second_account = Account.create!(external_account_id: "2nd", name: account_name)
|
||||
@identity.users.create!(account: second_account, name: @name)
|
||||
@identity.reload
|
||||
|
||||
account_name = @generator.generate
|
||||
assert_equal "Newart's 3rd Fizzy", account_name
|
||||
|
||||
third_membership = @identity.memberships.create(tenant: "3nd")
|
||||
third_membership.stubs(:account_name).returns(account_name)
|
||||
third_account = Account.create!(external_account_id: "3rd", name: account_name)
|
||||
@identity.users.create!(account: third_account, name: @name)
|
||||
@identity.reload
|
||||
|
||||
account_name = @generator.generate
|
||||
assert_equal "Newart's 4th Fizzy", account_name
|
||||
|
||||
fourth_membership = @identity.memberships.create(tenant: "4th")
|
||||
fourth_membership.stubs(:account_name).returns(account_name)
|
||||
fourth_account = Account.create!(external_account_id: "4th", name: account_name)
|
||||
@identity.users.create!(account: fourth_account, name: @name)
|
||||
@identity.reload
|
||||
|
||||
account_name = @generator.generate
|
||||
assert_equal "Newart's 5th Fizzy", account_name
|
||||
end
|
||||
|
||||
test "generate continues from the previous highest index" do
|
||||
membership = @identity.memberships.create(tenant: "12th")
|
||||
membership.stubs(:account_name).returns("Newart's 12th Fizzy")
|
||||
account = Account.create!(external_account_id: "12th", name: "Newart's 12th Fizzy")
|
||||
@identity.users.create!(account: account, name: @name)
|
||||
@identity.reload
|
||||
|
||||
account_name = @generator.generate
|
||||
assert_equal "Newart's 13th Fizzy", account_name
|
||||
|
||||
@@ -28,59 +28,25 @@ class SignupTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
test "#create_membership" do
|
||||
signup = Signup.new(
|
||||
full_name: "Kevin",
|
||||
identity: identities(:kevin)
|
||||
)
|
||||
|
||||
assert_difference -> { Membership.count }, 1 do
|
||||
assert signup.create_membership
|
||||
end
|
||||
|
||||
assert signup.tenant
|
||||
assert signup.membership
|
||||
assert signup.membership_id
|
||||
|
||||
signup_invalid = Signup.new(
|
||||
full_name: "",
|
||||
identity: identities(:kevin)
|
||||
)
|
||||
assert_not signup_invalid.create_membership, "Create membership should fail with invalid params"
|
||||
assert_not_empty signup_invalid.errors[:full_name], "Should have validation error for full_name"
|
||||
end
|
||||
|
||||
test "#complete" do
|
||||
Account.any_instance.expects(:setup_customer_template).once
|
||||
|
||||
signup_for_membership = Signup.new(
|
||||
full_name: "Kevin",
|
||||
identity: identities(:kevin)
|
||||
)
|
||||
signup_for_membership.create_membership
|
||||
|
||||
signup = Signup.new(
|
||||
full_name: "Kevin",
|
||||
account_name: "37signals",
|
||||
membership_id: signup_for_membership.membership_id,
|
||||
identity: identities(:kevin)
|
||||
)
|
||||
|
||||
assert signup.complete
|
||||
|
||||
assert signup.tenant
|
||||
assert signup.account
|
||||
assert signup.user
|
||||
assert_equal "Kevin", signup.user.name
|
||||
assert_equal "37signals", signup.account.name
|
||||
|
||||
signup_invalid = Signup.new(
|
||||
full_name: "",
|
||||
account_name: "37signals",
|
||||
membership_id: signup_for_membership.membership_id,
|
||||
identity: identities(:kevin)
|
||||
)
|
||||
assert_not signup_invalid.complete, "Complete should fail with invalid params"
|
||||
assert_not_empty signup_invalid.errors[:full_name], "Should have validation error for full_name"
|
||||
assert_not signup_invalid.complete
|
||||
assert_not_empty signup_invalid.errors[:full_name]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -77,7 +77,7 @@ class BoardsControllerTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
test "update all access" do
|
||||
board = Current.set(session: sessions(:kevin)) do
|
||||
board = Current.set(account: accounts("37s"), session: sessions(:kevin), user: users(:kevin)) do
|
||||
Board.create! name: "New board", all_access: false
|
||||
end
|
||||
assert_equal [ users(:kevin) ], board.users
|
||||
|
||||
@@ -36,7 +36,7 @@ class JoinCodesControllerTest < ActionDispatch::IntegrationTest
|
||||
test "create" do
|
||||
untenanted do
|
||||
assert_difference -> { Identity.count }, 1 do
|
||||
assert_difference -> { Membership.count }, 1 do
|
||||
assert_difference -> { User.count }, 1 do
|
||||
post join_path(tenant: @tenant, code: @join_code.code), params: { email_address: "new_user@example.com" }
|
||||
end
|
||||
end
|
||||
@@ -52,7 +52,7 @@ class JoinCodesControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
untenanted do
|
||||
assert_no_difference -> { Identity.count } do
|
||||
assert_no_difference -> { Membership.count } do
|
||||
assert_no_difference -> { User.count } do
|
||||
post join_path(tenant: @tenant, code: @join_code.code), params: { email_address: identity.email_address }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
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
|
||||
@@ -1,43 +0,0 @@
|
||||
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
|
||||
@@ -7,7 +7,7 @@ class Sessions::MenusControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
test "show with no memberships" do
|
||||
sign_in_as @identity
|
||||
@identity.memberships.delete_all
|
||||
@identity.users.delete_all
|
||||
|
||||
untenanted do
|
||||
get session_menu_url
|
||||
@@ -18,22 +18,25 @@ class Sessions::MenusControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
test "show with exactly one membership" do
|
||||
sign_in_as @identity
|
||||
@identity.memberships.delete_all
|
||||
@identity.memberships.create(tenant: "37signals")
|
||||
@identity.users.delete_all
|
||||
account = Account.create!(external_account_id: 9999991, name: "Test Account")
|
||||
@identity.users.create!(account: account, name: "Kevin")
|
||||
|
||||
untenanted do
|
||||
get session_menu_url
|
||||
end
|
||||
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_url(script_name: "/37signals")
|
||||
assert_redirected_to root_url(script_name: "/9999991")
|
||||
end
|
||||
|
||||
test "show with multiple memeberships" do
|
||||
sign_in_as @identity
|
||||
@identity.memberships.delete_all
|
||||
@identity.memberships.create(tenant: "37signals")
|
||||
@identity.memberships.create(tenant: "acme")
|
||||
@identity.users.delete_all
|
||||
account1 = Account.create!(external_account_id: 9999992, name: "37signals")
|
||||
account2 = Account.create!(external_account_id: 9999993, name: "Acme")
|
||||
@identity.users.create!(account: account1, name: "Kevin")
|
||||
@identity.users.create!(account: account2, name: "Kevin")
|
||||
|
||||
untenanted do
|
||||
get session_menu_url
|
||||
@@ -42,28 +45,4 @@ class Sessions::MenusControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "show renders as a menu section" do
|
||||
sign_in_as @identity
|
||||
@identity.memberships.delete_all
|
||||
@identity.memberships.create(tenant: "37signals")
|
||||
@identity.memberships.create(tenant: "acme")
|
||||
|
||||
untenanted do
|
||||
get session_menu_url menu_section: true
|
||||
end
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "show doesn't redirect when rendered as a menu section" do
|
||||
sign_in_as @identity
|
||||
@identity.memberships.delete_all
|
||||
@identity.memberships.create(tenant: "37signals")
|
||||
|
||||
untenanted do
|
||||
get session_menu_url menu_section: true
|
||||
end
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
@@ -26,7 +26,8 @@ class ApplicationHelperTest < ActionView::TestCase
|
||||
|
||||
test "page_title_tag on tenanted page when user has multiple memberships" do
|
||||
Current.session = sessions(:david)
|
||||
identities(:david).memberships.create!(tenant: "dangling-tenant")
|
||||
other_account = Account.create!(external_account_id: "dangling-tenant", name: "Other Account")
|
||||
identities(:david).users.create!(account: other_account, name: "David")
|
||||
|
||||
assert_select parse(page_title_tag), "title", text: "37signals | Fizzy"
|
||||
end
|
||||
@@ -40,7 +41,8 @@ class ApplicationHelperTest < ActionView::TestCase
|
||||
|
||||
test "page_title_tag on tenanted page with a page title when user has multiple memberships" do
|
||||
Current.session = sessions(:david)
|
||||
identities(:david).memberships.create!(tenant: "dangling-tenant")
|
||||
other_account = Account.create!(external_account_id: "dangling-tenant", name: "Other Account")
|
||||
identities(:david).users.create!(account: other_account, name: "David")
|
||||
@page_title = "Holodeck"
|
||||
|
||||
assert_select parse(page_title_tag), "title", text: "Holodeck | 37signals | Fizzy"
|
||||
|
||||
@@ -14,11 +14,10 @@ class AccountTest < ActiveSupport::TestCase
|
||||
|
||||
test ".create_with_admin_user creates a new local account" do
|
||||
identity = identities(:david)
|
||||
membership = identity.memberships.create!(tenant: ActiveRecord::FixtureSet.identify("account-create-with-admin-user-test"))
|
||||
account = nil
|
||||
|
||||
assert_changes -> { Account.count }, +1 do
|
||||
assert_changes -> { User.count }, +1 do
|
||||
assert_changes -> { User.count }, +2 do
|
||||
account = Account.create_with_admin_user(
|
||||
account: {
|
||||
external_account_id: ActiveRecord::FixtureSet.identify("account-create-with-admin-user-test"),
|
||||
@@ -26,7 +25,7 @@ class AccountTest < ActiveSupport::TestCase
|
||||
},
|
||||
owner: {
|
||||
name: "David",
|
||||
membership: membership
|
||||
identity: identity
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
@@ -15,14 +15,14 @@ class Board::AccessibleTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
test "grants access to everyone after creation" do
|
||||
board = Current.set(session: sessions(:david)) do
|
||||
board = Current.set(session: sessions(:david), user: users(:david)) do
|
||||
Board.create! name: "New board", all_access: true
|
||||
end
|
||||
assert_equal accounts("37s").users.active.sort, board.users.sort
|
||||
end
|
||||
|
||||
test "grants access to everyone after update" do
|
||||
board = Current.set(session: sessions(:david)) do
|
||||
board = Current.set(session: sessions(:david), user: users(:david)) do
|
||||
Board.create! name: "New board"
|
||||
end
|
||||
assert_equal [ users(:david) ], board.users
|
||||
|
||||
@@ -7,7 +7,7 @@ class FilterTest < ActiveSupport::TestCase
|
||||
|
||||
test "cards" do
|
||||
Current.set session: sessions(:david) do
|
||||
@new_board = Board.create! name: "Inaccessible Board"
|
||||
@new_board = Board.create! name: "Inaccessible Board", creator: users(:david)
|
||||
@new_card = @new_board.cards.create!(status: "published")
|
||||
|
||||
cards(:layout).comments.create!(body: "I hate haggis")
|
||||
|
||||
@@ -23,15 +23,13 @@ class IdentityTest < ActiveSupport::TestCase
|
||||
identity = identities(:david)
|
||||
account = accounts(:initech)
|
||||
|
||||
assert_difference [ "Membership.count", "User.count" ], 1 do
|
||||
assert_difference "User.count", 1 do
|
||||
identity.join(account)
|
||||
end
|
||||
|
||||
membership = identity.memberships.order(created_at: :desc).first
|
||||
assert_equal account.external_account_id.to_s, membership.tenant
|
||||
|
||||
user = account.users.order(created_at: :desc).first
|
||||
assert_equal membership, user.membership
|
||||
user = account.users.find_by(identity: identity)
|
||||
assert_not_nil user
|
||||
assert_equal identity, user.identity
|
||||
assert_equal identity.email_address, user.name
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
require "test_helper"
|
||||
|
||||
class Membership::EmailAddressChangeableTest < ActiveSupport::TestCase
|
||||
include ActionMailer::TestHelper
|
||||
|
||||
setup do
|
||||
@identity = identities(:kevin)
|
||||
@tenant = accounts("37s").external_account_id
|
||||
@membership = @identity.memberships.find_by!(tenant: @tenant)
|
||||
@new_email = "newart@example.com"
|
||||
end
|
||||
|
||||
test "send_email_address_change_confirmation" do
|
||||
assert_emails 1 do
|
||||
@membership.send_email_address_change_confirmation(@new_email)
|
||||
end
|
||||
end
|
||||
|
||||
test "change_email_address" do
|
||||
old_identity = @identity
|
||||
|
||||
assert_difference -> { Identity.count }, +1 do
|
||||
@membership.change_email_address(@new_email)
|
||||
end
|
||||
|
||||
assert_equal @new_email, @membership.reload.identity.email_address
|
||||
assert_not old_identity.reload.memberships.exists?(id: @membership.id)
|
||||
assert_equal @new_email, @membership.reload.identity.email_address
|
||||
|
||||
# Make sure that a prior membership doesn't exist
|
||||
identities(:david).memberships.where(tenant: @tenant).delete_all
|
||||
|
||||
assert_no_difference -> { Identity.count } do
|
||||
@membership.change_email_address(identities(:david).email_address)
|
||||
end
|
||||
assert_equal identities(:david).email_address, @membership.reload.identity.email_address
|
||||
end
|
||||
|
||||
test "change_email_address_using_token" do
|
||||
token = @membership.send(:generate_email_address_change_token, to: @new_email)
|
||||
|
||||
Membership.change_email_address_using_token(token)
|
||||
|
||||
assert_equal @new_email, @membership.reload.identity.email_address
|
||||
end
|
||||
|
||||
test "change_email_address_using_token with invalid token" do
|
||||
assert_raises(ArgumentError, match: /invalid/) do
|
||||
Membership.change_email_address_using_token("invalid_token")
|
||||
end
|
||||
|
||||
token = @membership.send(:generate_email_address_change_token, to: @new_email)
|
||||
@identity.update!(email_address: "different@example.com")
|
||||
|
||||
assert_raises(ArgumentError, match: /different email address/) do
|
||||
Membership.change_email_address_using_token(token)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,18 +0,0 @@
|
||||
require "test_helper"
|
||||
|
||||
class MembershipTest < ActiveSupport::TestCase
|
||||
test "change_email_address" do
|
||||
tenant = accounts("37s").external_account_id
|
||||
old_identity = identities(:kevin)
|
||||
new_email = "kevin.new@37signals.com"
|
||||
|
||||
assert_difference -> { Identity.count }, 1 do
|
||||
Membership.change_email_address(from: old_identity.email_address, to: new_email, tenant: tenant)
|
||||
end
|
||||
|
||||
new_identity = Identity.find_by(email_address: new_email)
|
||||
assert new_identity
|
||||
assert new_identity.memberships.exists?(tenant: tenant)
|
||||
assert_not old_identity.reload.memberships.exists?(tenant: tenant)
|
||||
end
|
||||
end
|
||||
@@ -2,14 +2,14 @@ require "test_helper"
|
||||
|
||||
class User::AccessorTest < ActiveSupport::TestCase
|
||||
test "new users get added to all_access boards on creation" do
|
||||
user = User.create!(name: "Jorge")
|
||||
user = User.create!(account: accounts("37s"), name: "Jorge")
|
||||
|
||||
assert_includes user.boards, boards(:writebook)
|
||||
assert_equal user.account.boards.all_access.count, user.boards.count
|
||||
end
|
||||
|
||||
test "system user does not get added to boards on creation" do
|
||||
system_user = User.create!(role: "system", name: "Test System User")
|
||||
system_user = User.create!(account: accounts("37s"), role: "system", name: "Test System User")
|
||||
assert_empty system_user.boards
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,7 +2,7 @@ require "test_helper"
|
||||
|
||||
class User::ConfigurableTest < ActiveSupport::TestCase
|
||||
test "should create settings for new users" do
|
||||
user = User.create! name: "Some new user"
|
||||
user = User.create! account: accounts("37s"), name: "Some new user"
|
||||
assert user.settings.present?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,18 +2,22 @@ require "test_helper"
|
||||
|
||||
class UserTest < ActiveSupport::TestCase
|
||||
test "create" do
|
||||
user = User.create! \
|
||||
user = User.create!(
|
||||
account: accounts("37s"),
|
||||
role: "member",
|
||||
name: "Victor Cooper"
|
||||
)
|
||||
|
||||
assert_equal [ boards(:writebook) ], user.boards
|
||||
assert user.settings.present?
|
||||
end
|
||||
|
||||
test "creation gives access to all_access boards" do
|
||||
user = User.create! \
|
||||
user = User.create!(
|
||||
account: accounts("37s"),
|
||||
role: "member",
|
||||
name: "Victor Cooper"
|
||||
)
|
||||
|
||||
assert_equal [ boards(:writebook) ], user.boards
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user