Esempio n. 1
0
    def test_quandl_exceptions(self):
        quandl_errors = [('QELx04', 429, LimitExceededError),
                         ('QEMx01', 500, InternalServerError),
                         ('QEAx01', 400, AuthenticationError),
                         ('QEPx02', 403, ForbiddenError),
                         ('QESx03', 422, InvalidRequestError),
                         ('QECx05', 404, NotFoundError),
                         ('QEXx01', 503, ServiceUnavailableError),
                         ('QEZx02', 400, QuandlError)]

        httpretty.register_uri(httpretty.GET,
                               "https://www.quandl.com/api/v3/databases",
                               responses=[
                                   httpretty.Response(body=json.dumps({
                                       'quandl_error': {
                                           'code': x[0],
                                           'message': 'something went wrong'
                                       }
                                   }),
                                                      status=x[1])
                                   for x in quandl_errors
                               ])

        for expected_error in quandl_errors:
            self.assertRaises(expected_error[2],
                              lambda: Connection.request('get', 'databases'))
Esempio n. 2
0
 def test_parse_error(self):
     httpretty.register_uri(httpretty.GET,
                            "https://www.quandl.com/api/v3/databases",
                            body="not json",
                            status=500)
     self.assertRaises(QuandlError,
                       lambda: Connection.request('get', 'databases'))
Esempio n. 3
0
    def setUpClass(cls):
        httpretty.enable()
        dataset_data = {'dataset_data': DatasetDataFactory.build()}
        httpretty.register_uri(
            httpretty.GET,
            re.compile('https://www.quandl.com/api/v3/datasets*'),
            body=json.dumps(dataset_data))
        cls.expected_raw_data = [{
            'date': datetime.date(2015, 7, 11),
            'column1': 444.3,
            'column2': 10,
            'column3': 3
        }, {
            'date': datetime.date(2015, 7, 13),
            'column1': 433.3,
            'column2': 4,
            'column3': 3
        }, {
            'date': datetime.date(2015, 7, 14),
            'column1': 437.5,
            'column2': 3,
            'column3': 3
        }, {
            'date': datetime.date(2015, 7, 15),
            'column1': 440.0,
            'column2': 2,
            'column3': 3
        }]

        cls.expected_list_values = [[datetime.date(2015, 7, 11), 444.3, 10, 3],
                                    [datetime.date(2015, 7, 13), 433.3, 4, 3],
                                    [datetime.date(2015, 7, 14), 437.5, 3, 3],
                                    [datetime.date(2015, 7, 15), 440.0, 2, 3]]
 def test_parse_error(self, request_method):
     ApiConfig.retry_backoff_factor = 0
     httpretty.register_uri(getattr(httpretty, request_method),
                            "https://www.quandl.com/api/v3/databases",
                            body="not json", status=500)
     self.assertRaises(
         QuandlError, lambda: Connection.request(request_method, 'databases'))
Esempio n. 5
0
 def test_non_quandl_error(self):
     httpretty.register_uri(httpretty.GET,
                            "https://www.quandl.com/api/v3/databases",
                            body=json.dumps(
                             {'foobar':
                              {'code': 'blah', 'message': 'something went wrong'}}), status=500)
     self.assertRaises(
         QuandlError, lambda: Connection.request('get', 'databases'))
Esempio n. 6
0
    def test_correct_response_exception_raised_for_errors_not_in_retry_status_codes(self):
        ApiConfig.retry_status_codes = []
        mock_responses = [self.error_response]
        httpretty.register_uri(httpretty.GET,
                               "https://www.quandl.com/api/v3/databases",
                               responses=mock_responses)

        self.assertRaises(InternalServerError, Connection.request, 'get', 'databases')
Esempio n. 7
0
    def test_correct_response_exception_raised_for_errors_not_in_retry_status_codes(self):
        ApiConfig.retry_status_codes = []
        mock_responses = [self.error_response]
        httpretty.register_uri(httpretty.GET,
                               "https://www.quandl.com/api/v3/databases",
                               responses=mock_responses)

        self.assertRaises(InternalServerError, Connection.request, 'get', 'databases')
 def test_non_quandl_error(self):
     httpretty.register_uri(httpretty.GET,
                            "https://www.quandl.com/api/v3/databases",
                            body=json.dumps(
                             {'foobar':
                              {'code': 'blah', 'message': 'something went wrong'}}), status=500)
     self.assertRaises(
         QuandlError, lambda: Connection.request('get', 'databases'))
Esempio n. 9
0
 def test_exception_raised_if_column_and_data_row_mistmatch(self):
     dataset_data = {
         'dataset_data': DatasetDataFactory.build(column_names=['blah'])}
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/datasets*'),
                            body=json.dumps(dataset_data))
     self.assertRaises(InvalidDataError, lambda: Data.all())
 def setUpClass(cls):
     httpretty.enable()
     datasets = {'datasets': DatasetFactory.build_batch(3)}
     meta = {'meta': MetaFactory.build(current_page=1, total_pages=1)}
     datasets.update(meta)
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/datasets*'),
                            body=json.dumps(datasets))
Esempio n. 11
0
 def setUpClass(cls):
     httpretty.enable()
     datasets = {'datasets': DatasetFactory.build_batch(3)}
     meta = {'meta': MetaFactory.build(current_page=1, total_pages=1)}
     datasets.update(meta)
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/datasets*'),
                            body=json.dumps(datasets))
Esempio n. 12
0
    def test_correct_response_exception_raised_if_retries_fail(self):
        ApiConfig.number_of_retries = 2
        ApiConfig.retry_status_codes = [self.error_response.status]
        mock_responses = [self.error_response] * 3
        httpretty.register_uri(httpretty.GET,
                               "https://www.quandl.com/api/v3/databases",
                               responses=mock_responses)

        self.assertRaises(InternalServerError, Connection.request, 'get', 'databases')
Esempio n. 13
0
    def test_correct_response_exception_raised_if_retries_fail(self):
        ApiConfig.number_of_retries = 2
        ApiConfig.retry_status_codes = [self.error_response.status]
        mock_responses = [self.error_response] * 3
        httpretty.register_uri(httpretty.GET,
                               "https://www.quandl.com/api/v3/databases",
                               responses=mock_responses)

        self.assertRaises(InternalServerError, Connection.request, 'get', 'databases')
 def test_non_quandl_error(self, request_method):
     ApiConfig.retry_backoff_factor = 0
     httpretty.register_uri(getattr(httpretty, request_method),
                            "https://www.quandl.com/api/v3/databases",
                            body=json.dumps(
                             {'foobar':
                              {'code': 'blah', 'message': 'something went wrong'}}), status=500)
     self.assertRaises(
         QuandlError, lambda: Connection.request(request_method, 'databases'))
Esempio n. 15
0
 def test_exception_raised_if_column_and_data_row_mistmatch(self):
     dataset_data = {
         'dataset_data': DatasetDataFactory.build(column_names=['blah'])
     }
     httpretty.register_uri(
         httpretty.GET,
         re.compile('https://www.quandl.com/api/v3/datasets*'),
         body=json.dumps(dataset_data))
     self.assertRaises(InvalidDataError, lambda: Data.all())
Esempio n. 16
0
 def setUpClass(cls):
     httpretty.enable()
     database = {'database': DatabaseFactory.build(database_code='NSE')}
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/databases/*'),
                            body=json.dumps(database))
     cls.db_instance = Database(Database.get_code_from_meta(
         database['database']), database['database'])
Esempio n. 17
0
 def setUpClass(cls):
     httpretty.enable()
     dataset = {'dataset': DatasetFactory.build(
         database_code='NSE', dataset_code='OIL')}
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/datasets/*'),
                            body=json.dumps(dataset))
     dataset_code = Dataset.get_code_from_meta(dataset['dataset'])
     cls.dataset_instance = Dataset(dataset_code, dataset['dataset'])
 def setUpClass(cls):
     httpretty.enable()
     dataset = {'dataset': DatasetFactory.build(
         database_code='NSE', dataset_code='OIL')}
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/datasets/*'),
                            body=json.dumps(dataset))
     dataset_code = Dataset.get_code_from_meta(dataset['dataset'])
     cls.dataset_instance = Dataset(dataset_code, dataset['dataset'])
Esempio n. 19
0
 def setUpClass(cls):
     httpretty.enable()
     databases = {'databases': DatabaseFactory.build_batch(10)}
     meta = {'meta': MetaFactory.build()}
     databases.update(meta)
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/databases*'),
                            body=json.dumps(databases))
     cls.expected_databases = databases
Esempio n. 20
0
 def test_bulk_download_raises_exception_when_error_response(self):
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/databases/*'),
                            body=json.dumps(
                                {'quandl_error':
                                 {'code': 'QEMx01', 'message': 'something went wrong'}}),
                            status=500)
     self.assertRaises(
         InternalServerError, lambda: self.database.bulk_download_to_file('.'))
Esempio n. 21
0
 def setUpClass(cls):
     httpretty.enable()
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/databases/*'),
                            adding_headers={
                                'Location': 'https://www.blah.com/download/db.zip'
                            },
                            body='{}', status=302)
     httpretty.register_uri(httpretty.GET,
                            re.compile('https://www.blah.com/'), body='{}')
Esempio n. 22
0
    def test_correct_response_returned_if_retries_succeed(self):
        ApiConfig.number_of_retries = 3
        ApiConfig.retry_status_codes = [self.error_response.status]

        mock_responses = [self.error_response] + [self.error_response] + [self.success_response]
        httpretty.register_uri(httpretty.GET,
                               "https://www.quandl.com/api/v3/databases",
                               responses=mock_responses)

        response = Connection.request('get', 'databases')
        self.assertEqual(response.json(), self.datatable)
        self.assertEqual(response.status_code, self.success_response.status)
Esempio n. 23
0
    def test_correct_response_returned_if_retries_succeed(self):
        ApiConfig.number_of_retries = 3
        ApiConfig.retry_status_codes = [self.error_response.status]

        mock_responses = [self.error_response] + [self.error_response] + [self.success_response]
        httpretty.register_uri(httpretty.GET,
                               "https://www.quandl.com/api/v3/databases",
                               responses=mock_responses)

        response = Connection.request('get', 'databases')
        self.assertEqual(response.json(), self.datatable)
        self.assertEqual(response.status_code, self.success_response.status)
Esempio n. 24
0
    def setUp(self):
        httpretty.enable()
        httpretty.register_uri(httpretty.GET,
                               re.compile(
                                   'https://www.quandl.com/api/v3/databases/*'),
                               adding_headers={
                                   'Location': 'https://www.blah.com/download/db.zip'
                               },
                               body='{}', status=302)
        httpretty.register_uri(httpretty.GET,
                               re.compile('https://www.blah.com/'), body='{}')

        database = {'database': DatabaseFactory.build(database_code='NSE')}
        self.database = Database(database['database']['database_code'], database['database'])
        ApiConfig.api_key = 'api_token'
        ApiConfig.api_version = '2015-04-09'
    def setUp(self):
        httpretty.enable()
        httpretty.register_uri(
            httpretty.GET,
            re.compile('https://www.quandl.com/api/v3/databases/*'),
            adding_headers={
                'Location': 'https://www.blah.com/download/db.zip'
            },
            body='{}',
            status=302)
        httpretty.register_uri(httpretty.GET,
                               re.compile('https://www.blah.com/'),
                               body='{}')

        database = {'database': DatabaseFactory.build(database_code='NSE')}
        self.database = Database(database['database']['database_code'],
                                 database['database'])
        ApiConfig.api_key = 'api_token'
        ApiConfig.api_version = '2015-04-09'
Esempio n. 26
0
    def setUpClass(cls):
        httpretty.enable()
        dataset_data = {'dataset_data': DatasetDataFactory.build()}
        httpretty.register_uri(httpretty.GET,
                               re.compile(
                                   'https://www.quandl.com/api/v3/datasets*'),
                               body=json.dumps(dataset_data))
        cls.expected_raw_data = [{'date': datetime.date(2015, 7, 11), 'column1': 444.3,
                                  'column2': 10, 'column3': 3},
                                 {'date': datetime.date(2015, 7, 13), 'column1': 433.3,
                                  'column2': 4, 'column3': 3},
                                 {'date': datetime.date(2015, 7, 14), 'column1': 437.5,
                                  'column2': 3, 'column3': 3},
                                 {'date': datetime.date(2015, 7, 15), 'column1': 440.0,
                                  'column2': 2, 'column3': 3}]

        cls.expected_list_values = [[datetime.date(2015, 7, 11), 444.3, 10, 3],
                                    [datetime.date(2015, 7, 13), 433.3, 4, 3],
                                    [datetime.date(2015, 7, 14), 437.5, 3, 3],
                                    [datetime.date(2015, 7, 15), 440.0, 2, 3]]
Esempio n. 27
0
    def test_quandl_exceptions(self):
        quandl_errors = [('QELx04', 429, LimitExceededError),
                         ('QEMx01', 500, InternalServerError),
                         ('QEAx01', 400, AuthenticationError),
                         ('QEPx02', 403, ForbiddenError),
                         ('QESx03', 422, InvalidRequestError),
                         ('QECx05', 404, NotFoundError),
                         ('QEXx01', 503, ServiceUnavailableError),
                         ('QEZx02', 400, QuandlError)]

        httpretty.register_uri(httpretty.GET,
                               "https://www.quandl.com/api/v3/databases",
                               responses=[httpretty.Response(body=json.dumps(
                                   {'quandl_error':
                                    {'code': x[0], 'message': 'something went wrong'}}),
                                   status=x[1]) for x in quandl_errors]
                               )

        for expected_error in quandl_errors:
            self.assertRaises(
                expected_error[2], lambda: Connection.request('get', 'databases'))
Esempio n. 28
0
 def test_parse_error(self):
     httpretty.register_uri(httpretty.GET,
                            "https://www.quandl.com/api/v3/databases",
                            body="not json", status=500)
     self.assertRaises(
         QuandlError, lambda: Connection.request('get', 'databases'))