From d2161350cc8f8fc5fd9b486a07d518e76a76cde7 Mon Sep 17 00:00:00 2001 From: Chantal Rollison Date: Wed, 5 Sep 2018 06:24:06 -0700 Subject: [PATCH] Handled exception during file upload --- app/controllers/concerns/uploads_actions.rb | 2 ++ .../unreleased/ccr-6699_image_for_object_error.yml | 6 ++++++ .../projects/uploads_controller_spec.rb | 14 ++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 changelogs/unreleased/ccr-6699_image_for_object_error.yml diff --git a/app/controllers/concerns/uploads_actions.rb b/app/controllers/concerns/uploads_actions.rb index 434459a225a..bb8c245a5b7 100644 --- a/app/controllers/concerns/uploads_actions.rb +++ b/app/controllers/concerns/uploads_actions.rb @@ -53,6 +53,8 @@ module UploadsActions maximum_size: Gitlab::CurrentSettings.max_attachment_size.megabytes.to_i) render json: authorized + rescue SocketError + render json: "Error uploading file", status: :internal_server_error end private diff --git a/changelogs/unreleased/ccr-6699_image_for_object_error.yml b/changelogs/unreleased/ccr-6699_image_for_object_error.yml new file mode 100644 index 00000000000..dec1adaceff --- /dev/null +++ b/changelogs/unreleased/ccr-6699_image_for_object_error.yml @@ -0,0 +1,6 @@ +--- +title: Handles exception during file upload - replaces the stack trace with a small + error message. +merge_request: 21528 +author: +type: fixed diff --git a/spec/controllers/projects/uploads_controller_spec.rb b/spec/controllers/projects/uploads_controller_spec.rb index 325ee53aafb..9802e4d5b1e 100644 --- a/spec/controllers/projects/uploads_controller_spec.rb +++ b/spec/controllers/projects/uploads_controller_spec.rb @@ -18,6 +18,20 @@ describe Projects::UploadsController do end end + context "when exception occurs" do + before do + allow(FileUploader).to receive(:workhorse_authorize).and_raise(SocketError.new) + sign_in(create(:user)) + end + + it "responds with status internal_server_error" do + post_authorize + + expect(response).to have_gitlab_http_status(500) + expect(response.body).to eq('Error uploading file') + end + end + def post_authorize(verified: true) request.headers.merge!(workhorse_internal_api_request_header) if verified