From 3cfd2a20191cb87281061d14ad2b5aa1d7e29058 Mon Sep 17 00:00:00 2001
From: Robert Schaefer <robert.schaefer@student.hpi.de>
Date: Wed, 10 Jan 2018 23:30:48 +0100
Subject: [PATCH] Proper error handling

Remove silly check for HTML tags
Add test case for invalid json
---
 lib/geocoder/lookups/ipdata_co.rb   | 4 ----
 test/fixtures/ipdata_co_8_8_8       | 1 +
 test/unit/lookups/ipdata_co_test.rb | 8 ++++++++
 3 files changed, 9 insertions(+), 4 deletions(-)
 create mode 100644 test/fixtures/ipdata_co_8_8_8

diff --git a/lib/geocoder/lookups/ipdata_co.rb b/lib/geocoder/lookups/ipdata_co.rb
index f1322a2c..a5fa295c 100644
--- a/lib/geocoder/lookups/ipdata_co.rb
+++ b/lib/geocoder/lookups/ipdata_co.rb
@@ -18,10 +18,6 @@ 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?
diff --git a/test/fixtures/ipdata_co_8_8_8 b/test/fixtures/ipdata_co_8_8_8
new file mode 100644
index 00000000..2462e127
--- /dev/null
+++ b/test/fixtures/ipdata_co_8_8_8
@@ -0,0 +1 @@
+8.8.8 does not appear to be an IPv4 or IPv6 address
\ No newline at end of file
diff --git a/test/unit/lookups/ipdata_co_test.rb b/test/unit/lookups/ipdata_co_test.rb
index fcd98f80..3811a13c 100644
--- a/test/unit/lookups/ipdata_co_test.rb
+++ b/test/unit/lookups/ipdata_co_test.rb
@@ -12,8 +12,16 @@ class IpdataCoTest < GeocoderTestCase
     assert result.is_a?(Geocoder::Result::IpdataCo)
   end
 
+  def test_invalid_json
+    Geocoder.configure(:always_raise => [Geocoder::ResponseParseError])
+    assert_raise Geocoder::ResponseParseError do
+      Geocoder.search("8.8.8", ip_address: true)
+    end
+  end
+
   def test_result_components
     result = Geocoder.search("74.200.247.59").first
     assert_equal "Jersey City, NJ 07302, United States", result.address
   end
+
 end
-- 
GitLab