diff options
author | Rémy Coutable <remy@rymai.me> | 2019-05-10 08:21:42 +0000 |
---|---|---|
committer | GitLab Release Tools Bot <robert+release-tools@gitlab.com> | 2019-05-20 13:20:30 +0000 |
commit | 84336fa361fab28148992b791f616539908e4bdf (patch) | |
tree | d2f3c5a0f263727deb61fc6a4a7b7b3c48c97760 | |
parent | 3fb8552fc1847789ab2e60b9f6db6aeb3f6b00e8 (diff) | |
download | gitlab-ce-84336fa361fab28148992b791f616539908e4bdf.tar.gz |
Merge branch 'sh-fix-invited-members' into 'master'
Fix Error 500 when inviting user already present
Closes #61574
See merge request gitlab-org/gitlab-ce!28198
(cherry picked from commit a0da5e08ec566fb4c571391cb8281bced25ce35d)
f1640616 Fix Error 500 when inviting user already present
-rw-r--r-- | app/services/members/create_service.rb | 11 | ||||
-rw-r--r-- | changelogs/unreleased/sh-fix-invited-members.yml | 5 | ||||
-rw-r--r-- | spec/services/members/create_service_spec.rb | 13 |
3 files changed, 27 insertions, 2 deletions
diff --git a/app/services/members/create_service.rb b/app/services/members/create_service.rb index f6bad74736c..d6b17ec10be 100644 --- a/app/services/members/create_service.rb +++ b/app/services/members/create_service.rb @@ -23,7 +23,16 @@ module Members members.each do |member| if member.errors.any? - errors << "#{member.user.username}: #{member.errors.full_messages.to_sentence}" + current_error = + # Invited users may not have an associated user + if member.user.present? + "#{member.user.username}: " + else + "" + end + + current_error += member.errors.full_messages.to_sentence + errors << current_error else after_execute(member: member) end diff --git a/changelogs/unreleased/sh-fix-invited-members.yml b/changelogs/unreleased/sh-fix-invited-members.yml new file mode 100644 index 00000000000..96e43e1aa53 --- /dev/null +++ b/changelogs/unreleased/sh-fix-invited-members.yml @@ -0,0 +1,5 @@ +--- +title: Fix Error 500 when inviting user already present +merge_request: 28198 +author: +type: fixed diff --git a/spec/services/members/create_service_spec.rb b/spec/services/members/create_service_spec.rb index 2c4fb131ed9..674fe0f666e 100644 --- a/spec/services/members/create_service_spec.rb +++ b/spec/services/members/create_service_spec.rb @@ -44,7 +44,18 @@ describe Members::CreateService do result = described_class.new(user, params).execute(project) expect(result[:status]).to eq(:error) - expect(result[:message]).to include(project_user.username) + expect(result[:message]).to include("#{project_user.username}: Access level is not included in the list") expect(project.users).not_to include project_user end + + it 'does not add a member with an existing invite' do + invited_member = create(:project_member, :invited, project: project) + + params = { user_ids: invited_member.invite_email, + access_level: Gitlab::Access::GUEST } + result = described_class.new(user, params).execute(project) + + expect(result[:status]).to eq(:error) + expect(result[:message]).to eq('Invite email has already been taken') + end end |