Newer
Older
# encoding: utf-8
require 'test_helper'
class IpdataCoTest < GeocoderTestCase
def setup
Geocoder.configure(ip_lookup: :ipdata_co)
end
def test_result_on_ip_address_search
result = Geocoder.search("74.200.247.59").first
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
def test_not_authorized
Geocoder.configure(always_raise: [Geocoder::RequestDenied])
lookup = Geocoder::Lookup.get(:ipdata_co)
assert_raises Geocoder::RequestDenied do
response = MockHttpResponse.new(code: 403)
lookup.send(:check_response_for_errors!, response)
end
end
def test_api_key
Geocoder.configure(:api_key => 'XXXX')
# HACK: run the code once to add the api key to the HTTP request headers
Geocoder.search('8.8.8.8')
# It's really hard to 'un-monkey-patch' the base lookup class here
require 'webmock/test_unit'
WebMock.enable!
stubbed_request = WebMock.stub_request(:get, "https://api.ipdata.co/8.8.8.8").with(headers: {'api-key' => 'XXXX'}).to_return(status: 200)
g = Geocoder::Lookup::IpdataCo.new
g.send(:actual_make_api_request, Geocoder::Query.new('8.8.8.8'))
assert_requested(stubbed_request)
WebMock.reset!
WebMock.disable!
end