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