diff options
author | Alex Kalderimis <alex.kalderimis@gmail.com> | 2019-07-29 14:36:35 -0400 |
---|---|---|
committer | Alex Kalderimis <alex.kalderimis@gmail.com> | 2019-07-30 11:12:24 -0400 |
commit | 8a1fc36e1d3df359c7ab87a5d3b40cf35b2a8604 (patch) | |
tree | 052073f9f606a4534f4e1b9c361d74cab5fd569b | |
parent | ab509c78929d9b5f4e02d013e8911ac9d0a07aad (diff) | |
download | gitlab-ce-8a1fc36e1d3df359c7ab87a5d3b40cf35b2a8604.tar.gz |
Propagate argument errors as execution errorsajk-handle-gql-errors
-rw-r--r-- | app/controllers/graphql_controller.rb | 4 | ||||
-rw-r--r-- | spec/controllers/graphql_controller_spec.rb | 21 |
2 files changed, 25 insertions, 0 deletions
diff --git a/app/controllers/graphql_controller.rb b/app/controllers/graphql_controller.rb index 9fbbe373b0d..72d40f709e6 100644 --- a/app/controllers/graphql_controller.rb +++ b/app/controllers/graphql_controller.rb @@ -30,6 +30,10 @@ class GraphqlController < ApplicationController render_error(exception.message, status: :unprocessable_entity) end + rescue_from Gitlab::Graphql::Errors::ArgumentError do |exception| + render_error(exception.message, status: :unprocessable_entity) + end + private def execute_multiplex diff --git a/spec/controllers/graphql_controller_spec.rb b/spec/controllers/graphql_controller_spec.rb index c19a752b07b..9937bdf4061 100644 --- a/spec/controllers/graphql_controller_spec.rb +++ b/spec/controllers/graphql_controller_spec.rb @@ -7,6 +7,27 @@ describe GraphqlController do stub_feature_flags(graphql: true) end + describe 'ArgumentError' do + let(:user) { create(:user) } + let(:message) { 'green ideas sleep furiously' } + + before do + sign_in(user) + end + + it 'handles argument errors' do + allow(subject).to receive(:execute) do + raise Gitlab::Graphql::Errors::ArgumentError, message + end + + post :execute + + expect(json_response).to include( + 'errors' => include(a_hash_including('message' => message)) + ) + end + end + describe 'POST #execute' do context 'when user is logged in' do let(:user) { create(:user) } |