diff --git a/lib/google/apis/core/api_command.rb b/lib/google/apis/core/api_command.rb index 885516493..81f539418 100644 --- a/lib/google/apis/core/api_command.rb +++ b/lib/google/apis/core/api_command.rb @@ -94,11 +94,11 @@ module Google when 400, 402...500 error = parse_error(body) if error - message = error['reason'] if error.has_key?('reason') + message = sprintf('%s: %s', error['reason'], error['message']) raise Google::Apis::RateLimitError.new(message, status_code: status, header: header, - body: body) if RATE_LIMIT_ERRORS.include?(message) + body: body) if RATE_LIMIT_ERRORS.include?(error['reason']) end super(status, header, body, message) else diff --git a/spec/google/apis/core/api_command_spec.rb b/spec/google/apis/core/api_command_spec.rb index 6d105e200..bcbc896e8 100644 --- a/spec/google/apis/core/api_command_spec.rb +++ b/spec/google/apis/core/api_command_spec.rb @@ -151,6 +151,41 @@ EOF end end + context('with a client error response') do + let(:command) do + Google::Apis::Core::ApiCommand.new(:get, 'https://www.googleapis.com/zoo/animals') + end + + before(:example) do + json = < 'application/json' }, body: json) + end + + it 'should raise client error' do + expect { command.execute(client) }.to raise_error(Google::Apis::ClientError) + end + + it 'should raise an error with the reason and message' do + expect { command.execute(client) }.to raise_error( + /timeRangeEmpty: The specified time range is empty/) + end + end + context('with an empty error body') do let(:command) do Google::Apis::Core::ApiCommand.new(:get, 'https://www.googleapis.com/zoo/animals') @@ -166,5 +201,9 @@ EOF it 'should raise client error' do expect { command.execute(client) }.to raise_error(Google::Apis::ClientError) end + + it 'should use the default error message' do + expect { command.execute(client) }.to raise_error(/Invalid request/) + end end end diff --git a/spec/integration_tests/url_shortener_spec.rb b/spec/integration_tests/url_shortener_spec.rb index cd29dfcad..a8c7ff9a1 100644 --- a/spec/integration_tests/url_shortener_spec.rb +++ b/spec/integration_tests/url_shortener_spec.rb @@ -1,3 +1,17 @@ +# Copyright 2015 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + require 'spec_helper' require 'google/apis/urlshortener_v1' require 'googleauth'