From 3a1c324420e32d88307856f4b8db39f1ccea8f39 Mon Sep 17 00:00:00 2001 From: Luke Roberts <email@luke-roberts.co.uk> Date: Sat, 14 Jun 2014 15:56:12 +0800 Subject: [PATCH] tests for telize error handling --- lib/geocoder/lookups/telize.rb | 9 +++------ test/fixtures/telize_10_10_10_10 | 4 ++++ test/fixtures/telize_no_results | 5 ++++- test/test_helper.rb | 4 ++++ test/unit/lookups/telize_test.rb | 5 +++++ 5 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 test/fixtures/telize_10_10_10_10 diff --git a/lib/geocoder/lookups/telize.rb b/lib/geocoder/lookups/telize.rb index c3befae5..4c284a65 100644 --- a/lib/geocoder/lookups/telize.rb +++ b/lib/geocoder/lookups/telize.rb @@ -15,15 +15,12 @@ module Geocoder::Lookup private # --------------------------------------------------------------- - def parse_raw_data(raw_data) - raw_data.match(/^<html><title>404/) ? nil : super(raw_data) - end - def results(query) # don't look up a loopback address, just return the stored result return [reserved_result(query.text)] if query.loopback_ip_address? - # note: Freegeoip.net returns plain text "Not Found" on bad request - (doc = fetch_data(query)) ? [doc] : [] + # note: Telize returns json with a code attribute of 401 on bad request + doc = fetch_data(query) + (doc && doc['code'] == 401) ? [] : [doc] end def reserved_result(ip) diff --git a/test/fixtures/telize_10_10_10_10 b/test/fixtures/telize_10_10_10_10 new file mode 100644 index 00000000..b85a5590 --- /dev/null +++ b/test/fixtures/telize_10_10_10_10 @@ -0,0 +1,4 @@ +{ +"message": "Input string is not a valid IP address", +"code": 401 +} diff --git a/test/fixtures/telize_no_results b/test/fixtures/telize_no_results index 2ac0915d..b85a5590 100644 --- a/test/fixtures/telize_no_results +++ b/test/fixtures/telize_no_results @@ -1 +1,4 @@ -<html><title>404: Not Found</title><body>404: Not Found</body></html> +{ +"message": "Input string is not a valid IP address", +"code": 401 +} diff --git a/test/test_helper.rb b/test/test_helper.rb index b618b65e..06c1a8b4 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -145,6 +145,10 @@ module Geocoder class Telize private + def fixture_prefix + "telize" + end + def default_fixture_filename "telize_74_200_247_59" end diff --git a/test/unit/lookups/telize_test.rb b/test/unit/lookups/telize_test.rb index 449ee1e2..aa112b20 100644 --- a/test/unit/lookups/telize_test.rb +++ b/test/unit/lookups/telize_test.rb @@ -17,4 +17,9 @@ class TelizeTest < GeocoderTestCase result = Geocoder.search("74.200.247.59").first assert_equal "Plano, TX 75093, United States", result.address end + + def test_no_results + results = Geocoder.search("10.10.10.10") + assert_equal 0, results.length + end end -- GitLab