From 7f3cb08c2f1cb580ee8115fffaaf5803ff545dd4 Mon Sep 17 00:00:00 2001 From: Dan Drinkard <dan.drinkard@gmail.com> Date: Thu, 13 Mar 2014 16:14:17 -0400 Subject: [PATCH] Raise on 400, 402 --- lib/geocoder/lookups/base.rb | 8 +++++++- test/unit/lookup_test.rb | 27 ++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/geocoder/lookups/base.rb b/lib/geocoder/lookups/base.rb index 115f914d..6d1a75ab 100644 --- a/lib/geocoder/lookups/base.rb +++ b/lib/geocoder/lookups/base.rb @@ -225,9 +225,15 @@ module Geocoder end def check_response_for_errors!(response) - if response.code.to_i == 401 + if response.code.to_i == 400 + raise_error(Geocoder::InvalidRequest) || + warn("Geocoding API error: 400 Invalid Request") + elsif response.code.to_i == 401 raise_error(Geocoder::RequestDenied) || warn("Geocoding API error: 401 Unauthorized") + elsif response.code.to_i == 402 + raise_error(Geocoder::OverQueryLimitError) || + warn("Geocoding API error: 402 Forbidden") end end diff --git a/test/unit/lookup_test.rb b/test/unit/lookup_test.rb index 5ece0de4..1eb249f7 100644 --- a/test/unit/lookup_test.rb +++ b/test/unit/lookup_test.rb @@ -56,7 +56,32 @@ class LookupTest < GeocoderTestCase end end - def test_raises_exception_on_401_response + def test_raises_exception_on_error_http_status + error_statuses = { + '400' => Geocoder::InvalidRequest, + '401' => Geocoder::RequestDenied, + '402' => Geocoder::OverQueryLimitError + } + Geocoder.configure(always_raise: error_statuses.values) + error_statuses.each do |code, err| + assert_raises err do + lookup = Geocoder::Lookup.get(:smarty_streets) + response = MockHttpResponse.new(code: code.to_i) + lookup.send(:check_response_for_errors!, response) + end + end + end + + def test_raises_exception_on_401_response + Geocoder.configure(always_raise: [Geocoder::RequestDenied]) + assert_raises Geocoder::RequestDenied do + lookup = Geocoder::Lookup.get(:smarty_streets) + response = MockHttpResponse.new(code: 401) + lookup.send(:check_response_for_errors!, response) + end + end + + def test_raises_exception_on_402_response Geocoder.configure(always_raise: [Geocoder::RequestDenied]) assert_raises Geocoder::RequestDenied do lookup = Geocoder::Lookup.get(:smarty_streets) -- GitLab