Esempio n. 1
0
    def _get_internal(self, api_key_str, latitude_str, longitude_str):
        request = ApiRequest(api_key_str, latitude_str, longitude_str)
        validation_result = request.validate()

        if validation_result != returncode.OK:
            self._return_error(validation_result, "Invalid Request Parameters")
            return

        try:
            data_request = self.builder.build(request)
        except ValueError as err:
            self._return_error(returncode.ERROR_BUILDING_REQUEST, str(err))
            return

        if not self.validator.is_valid(api_key_str):
            self._return_error(returncode.INVALID_API_KEY, "Invalid Api Key")
            return

        try:
            data_response = self.retriever.retrieve(data_request)
        except TransmissionError as err:
            self._return_error(returncode.EXTERNAL_API_ERROR, str(err))
            return

        self._read_data_response_data(data_response)
        self._return_code = returncode.OK
Esempio n. 2
0
    def test_creates_data_request(self):
        request = ApiRequest("123", "80.12", "-110.30")

        data_request = self.builder.build(request)

        self.assertEquals(80.12, data_request.latitude)
        self.assertEquals(-110.3, data_request.longitude)
Esempio n. 3
0
    def test_creation(self):
        request = ApiRequest("api key", "234.30", "34.99")

        self.assertIsNotNone(request)
        self.assertEquals("api key", request.api_key)
        self.assertEquals("234.30", request.latitude_str)
        self.assertEquals("34.99", request.longitude_str)
Esempio n. 4
0
 def test_invalid_longitude(self):
     invalid_coordinates = [
         None, "", "a", "2" * 101, "-2", "-90.211", "99.0", "3.99.99",
         "-6.9", "-201.00"
     ]
     for longitude in invalid_coordinates:
         self._error_code_should_be(returncode.PARAM_LONG_ERROR,
                                    ApiRequest("abc", "4.99", longitude))
Esempio n. 5
0
    def test_returns_invalid_request_validation_error_code_for_longitude(self):
        expected_returncode = str(ApiRequest("API", "50.00", "23").validate())
        controller = DataRetrieverController(None, None, None)

        response = controller.get("API", "50.00", "23")

        self.assertEquals(expected_returncode, response.result)
        self.assertEquals("Invalid Request Parameters", response.errormsg)
        self._verify_no_data(response)
Esempio n. 6
0
    def test_str(self):
        request = ApiRequest("api key", "90.30", "4.99")

        actual_str = str(request)

        self.assertTrue(request.__class__.__name__ in actual_str)
        self.assertTrue("api_key='api key'" in actual_str)
        self.assertTrue("latitude_str='90.30'" in actual_str)
        self.assertTrue("longitude_str='4.99'" in actual_str)
Esempio n. 7
0
 def test_valid_request(self):
     l_requests = [
         ApiRequest("abc", "90.30", "4.99"),
         ApiRequest("abc", "90.30", "184.99"),
         ApiRequest("a" * 100, "90.30", "184.99"),
         ApiRequest("123", "-90.30", "184.99"),
         ApiRequest("a", "-90.30", "-184.99"),
         ApiRequest("aAb4Rf", "-0.30", "1.99")
     ]
     for request in l_requests:
         self._should_be_valid(request)
Esempio n. 8
0
 def test_raises_value_error_for_invalid_request(self):
     request = ApiRequest(None, None, None)
     with self.assertRaises(ValueError):
         self.builder.build(request)
Esempio n. 9
0
 def test_invalid_api_key(self):
     invalid_keys = [None, "", "a" * 101, "-", "#$%#$%@"]
     for api_key in invalid_keys:
         self._error_code_should_be(returncode.PARAM_KEY_ERROR,
                                    ApiRequest(api_key, "90.30", "4.99"))