class TestReverseGeocodingClient(TestCase): def setUp(self): self.auth_client = ReverseGeocodingClient('token') self.unauth_client = ReverseGeocodingClient() @mock.patch.object( requests, 'get', return_value=mock.MagicMock( status_code=200, json=lambda: {'features': [{ 'place_name': 'address' }]}, )) def test_reverse_geocode_valid(self, mock_request): result = self.auth_client.reverse_geocode('lat', 'lon') mock_request.assert_called_with( url='https://api.mapbox.com/geocoding/v5/mapbox.places/lon,lat.json' '?access_token=token&types=address', ) self.assertEqual(result, {'place_name': 'address'}) @mock.patch.object(requests, 'get', return_value=mock.MagicMock( status_code=200, json=lambda: {'features': []}, )) def test_reverse_geocode_no_results(self, mock_request): result = self.auth_client.reverse_geocode('lat', 'lon') mock_request.assert_called_with( url='https://api.mapbox.com/geocoding/v5/mapbox.places/lon,lat.json' '?access_token=token&types=address', ) self.assertIsNone(result) @mock.patch.object(requests, 'get') def test_reverse_geocode_no_access_token(self, mock_request): result = self.unauth_client.reverse_geocode('lat', 'lon') self.assertFalse(mock_request.called) self.assertIsNone(result) @mock.patch.object(requests, 'get', return_value=mock.MagicMock(status_code=401)) def test_reverse_geocode_api_failure(self, mock_request): result = self.auth_client.reverse_geocode('lat', 'lon') mock_request.assert_called_with( url='https://api.mapbox.com/geocoding/v5/mapbox.places/lon,lat.json' '?access_token=token&types=address', ) self.assertIsNone(result)
def __init__(self, app): """ Create an application context object, :param app: Flask application instance. """ self.config = ConfigClient() self.cache = CacheClient( addr=self.config.get_value('redis.addr'), prefix='orion', ) self.db = DbClient( app, user=self.config.get_value('database.user'), password=self.config.get_value('database.password'), host=self.config.get_value('database.host'), port=self.config.get_value('database.port'), name=self.config.get_value('database.name'), ) self.geocode = ReverseGeocodingClient( mapbox_access_token=self.config.get_value('mapbox_access_token'), ) self.metrics_event = EventMetricsClient( addr=self.config.get_value('statsd.addr'), prefix='orion', ) self.metrics_latency = LatencyMetricsClient( addr=self.config.get_value('statsd.addr'), prefix='orion', ) self.stream = StreamClient( kafka_addr=self.config.get_value('kafka.addr'), kafka_topic=self.config.get_value('kafka.topic'), )
class ReverseGeocodingClientTest(TestCase): def setUp(self): self.auth_client = ReverseGeocodingClient(GOOGLE_API_KEY_PREFIX) self.unauth_client = ReverseGeocodingClient() def test_init(self): self.assertIsNotNone(self.auth_client.gmaps_client) self.assertIsNone(self.unauth_client.gmaps_client) @mock.patch.object(googlemaps.Client, 'reverse_geocode') def test_reverse_geocode_valid(self, mock_reverse_geocode): mock_reverse_geocode.return_value = [ { 'formatted_address': 'address' }, { 'formatted_address': 'less-accurate-address' }, ] result = self.auth_client.reverse_geocode('lat', 'lon') self.assertTrue(mock_reverse_geocode.calledWith('lat', 'lon')) self.assertEqual(result, 'address') @mock.patch.object(googlemaps.Client, 'reverse_geocode') def test_reverse_geocode_no_api_key(self, mock_reverse_geocode): result = self.unauth_client.reverse_geocode('lat', 'lon') self.assertFalse(mock_reverse_geocode.called) self.assertIsNone(result) @mock.patch.object(googlemaps.Client, 'reverse_geocode', side_effect=ApiError('error')) def test_reverse_geocode_api_failure(self, mock_reverse_geocode): result = self.auth_client.reverse_geocode('lat', 'lon') self.assertTrue(mock_reverse_geocode.calledWith('lat', 'lon')) self.assertIsNone(result)
def __init__(self, app): """ Create an application context object, :param app: Flask application instance. """ self.config = ConfigClient() self.db = DbClient( app, user=self.config.get_value('database.user'), password=self.config.get_value('database.password'), host=self.config.get_value('database.host'), port=self.config.get_value('database.port'), name=self.config.get_value('database.name'), ) self.geocode = ReverseGeocodingClient( google_api_key=self.config.get_value('google_api_key'), )
def setUp(self): self.auth_client = ReverseGeocodingClient('token') self.unauth_client = ReverseGeocodingClient()
def setUp(self): self.auth_client = ReverseGeocodingClient(GOOGLE_API_KEY_PREFIX) self.unauth_client = ReverseGeocodingClient()