Beispiel #1
0
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)
Beispiel #2
0
    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'),
        )
Beispiel #3
0
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)
Beispiel #4
0
    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'), )
Beispiel #5
0
 def setUp(self):
     self.auth_client = ReverseGeocodingClient('token')
     self.unauth_client = ReverseGeocodingClient()
Beispiel #6
0
 def setUp(self):
     self.auth_client = ReverseGeocodingClient(GOOGLE_API_KEY_PREFIX)
     self.unauth_client = ReverseGeocodingClient()