summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacopo <beschi.jacopo@gmail.com>2018-07-27 21:49:49 +0200
committerJacopo <beschi.jacopo@gmail.com>2018-07-30 18:19:57 +0200
commit5bab78950d652ce15d87772ae2857f370fd926a4 (patch)
tree64f6e3e197bda5c502a8c6bd4f5c96ad12682f56
parent87f03f01735fb4b6dbef2e4bf625cf2546523a4e (diff)
downloadgitlab-ce-5bab78950d652ce15d87772ae2857f370fd926a4.tar.gz
Improve error message when adding invalid user to a project
-rw-r--r--changelogs/unreleased/32821-better-error-message-add-invalid-user-to-project.yml5
-rw-r--r--lib/api/members.rb5
-rw-r--r--spec/requests/api/members_spec.rb8
3 files changed, 17 insertions, 1 deletions
diff --git a/changelogs/unreleased/32821-better-error-message-add-invalid-user-to-project.yml b/changelogs/unreleased/32821-better-error-message-add-invalid-user-to-project.yml
new file mode 100644
index 00000000000..587d7209c2f
--- /dev/null
+++ b/changelogs/unreleased/32821-better-error-message-add-invalid-user-to-project.yml
@@ -0,0 +1,5 @@
+---
+title: Improve error message when adding invalid user to a project
+merge_request: 20885
+author: Jacopo Beschi @jacopo-beschi
+type: added
diff --git a/lib/api/members.rb b/lib/api/members.rb
index 3d2220fed96..d23dd834c69 100644
--- a/lib/api/members.rb
+++ b/lib/api/members.rb
@@ -75,7 +75,10 @@ module API
member = source.members.find_by(user_id: params[:user_id])
conflict!('Member already exists') if member
- member = source.add_user(params[:user_id], params[:access_level], current_user: current_user, expires_at: params[:expires_at])
+ user = User.find_by_id(params[:user_id])
+ not_found!('User') unless user
+
+ member = source.add_user(user, params[:access_level], current_user: current_user, expires_at: params[:expires_at])
if !member
not_allowed! # This currently can only be reached in EE
diff --git a/spec/requests/api/members_spec.rb b/spec/requests/api/members_spec.rb
index c621760b6c4..93e1c3a2294 100644
--- a/spec/requests/api/members_spec.rb
+++ b/spec/requests/api/members_spec.rb
@@ -231,6 +231,14 @@ describe API::Members do
expect(response).to have_gitlab_http_status(409)
end
+ it 'returns 404 when the user_id is not valid' do
+ post api("/#{source_type.pluralize}/#{source.id}/members", maintainer),
+ user_id: 0, access_level: Member::MAINTAINER
+
+ expect(response).to have_gitlab_http_status(404)
+ expect(json_response['message']).to eq('404 User Not Found')
+ end
+
it 'returns 400 when user_id is not given' do
post api("/#{source_type.pluralize}/#{source.id}/members", maintainer),
access_level: Member::MAINTAINER