Skip to content

Commit 305efc5

Browse files
committed
Fix more tests and refactor invitation signup flow
1 parent 97be0c3 commit 305efc5

5 files changed

Lines changed: 44 additions & 5 deletions

File tree

app/controllers/provider/invitee_signups_controller.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ def can_create?
5353
end
5454

5555
def build_user
56-
allowed_attrs = @invitation.account.users.new.defined_fields_names | %i(password password_confirmation)
56+
@user = @invitation.make_user
57+
allowed_attrs = @user.defined_fields_names | %i(password password_confirmation)
5758
user_params = params.fetch(:user, ActionController::Parameters.new).permit(*allowed_attrs)
58-
@user = @invitation.make_user(user_params)
59+
@user.assign_attributes(user_params)
5960

6061
# This is just a sanity guard added when splitting invitation
6162
# controllers. Remove when SURE.

app/models/invitation.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class Invitation < ApplicationRecord
2626

2727
# Build new user on information in this invitation.
2828
def make_user(params = {})
29-
self.user= account.users.build_with_fields params.reverse_merge(:email => email, :invitation => self)
29+
self.user = account.users.build_with_fields params.reverse_merge(:email => email, :invitation => self)
3030
end
3131

3232
def accepted?

lib/developer_portal/app/controllers/developer_portal/accounts/invitee_signups_controller.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,10 @@ def check_invitation!
121121
end
122122

123123
def build_user
124-
allowed_attrs = @invitation.account.users.new.defined_fields_names | %i(password password_confirmation)
125-
@user = @invitation.make_user(filter_readonly_params(params[:user], User).permit(*allowed_attrs))
124+
@user = @invitation.make_user
125+
allowed_attrs = @user.defined_fields_names | %i(password password_confirmation)
126+
user_params = filter_readonly_params(params[:user], User).permit(*allowed_attrs)
127+
@user.assign_attributes(user_params)
126128
end
127129

128130
def invitation_token

test/integration/developer_portal/accounts/invitee_signups_controller_test.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,23 @@ def setup
8787
assert_nil created_user.extra_fields['employee_id']
8888
end
8989

90+
test 'do not set unpermitted attributes' do
91+
invitation = FactoryBot.create(:invitation, account: buyer)
92+
93+
assert_difference(buyer.users.method(:count), +1) do
94+
post invitee_signup_path(invitation_token: invitation.token, user: user_params.merge(
95+
role: 'superadmin'
96+
))
97+
end
98+
99+
assert_equal I18n.t('developer_portal.accounts.invitee_signups.create.success'), flash[:notice]
100+
assert_redirected_to login_path
101+
102+
created_user = invitation.reload.user
103+
assert_equal :member, created_user.role
104+
assert_equal 'admin', created_user.username
105+
end
106+
90107
private
91108

92109
def user_params

test/integration/provider/invitee_signups_controller_integration_test.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,25 @@ def setup
2828
assert_redirected_to provider_login_path
2929
end
3030

31+
test 'do not set unpermitted attributes' do
32+
FieldsDefinition.create_defaults!(provider.provider_account)
33+
invitation = FactoryBot.create(:invitation, account: provider)
34+
35+
assert_difference(provider.users.method(:count), +1) do
36+
post provider_invitee_signup_path(invitation_token: invitation.token, user: user_params.merge(
37+
role: 'superadmin'
38+
))
39+
end
40+
41+
assert_equal I18n.t('provider.invitee_signups.create.success'), flash[:success]
42+
assert_redirected_to provider_login_path
43+
44+
created_user = invitation.reload.user
45+
assert_equal :member, created_user.role
46+
assert_equal 'admin', created_user.username
47+
end
48+
49+
3150
test 'get asks for upgrade' do
3251
provider.create_provider_constraints!(max_users: 0)
3352

0 commit comments

Comments
 (0)