def test_all(self, mock_requests): mock_requests.register_uri( 'GET', "https://api.chartmogul.com/v1/data_sources", status_code=200, json={ "data_sources": [{ "name": "test", "uuid": "my_uuid", "created_at": "2016-01-10T15:34:05Z", "status": "never_imported" }] }) config = Config("token", "secret") ds = DataSource.all(config).get() expected = DataSource._many(data_sources=[ DataSource( **{ "name": u"test", "uuid": u"my_uuid", "created_at": datetime(2016, 1, 10, 15, 34, 5), "status": u"never_imported" }) ]) self.assertEqual(mock_requests.call_count, 1, "expected call") self.assertEqual(mock_requests.last_request.qs, {}) self.assertEqual(mock_requests.last_request.text, None) self.assertTrue(isinstance(ds.data_sources[0], DataSource))
def test_api_incorrect(self, mock_requests): mock_requests.register_uri( 'POST', "https://api.chartmogul.com/v1/data_sources", status_code=400, json={ "code": 400, "message": "Parameter \"name\" is missing", "param": "name" }) config = Config("token", "secret") try: DataSource.create(config, data={"xname": "abc"}).get() except APIError as err: self.assertTrue(isinstance(err.__cause__, HTTPError)) else: self.fail('ArgumentMissingError not raised')
def test_date_serialization(self, mock_requests): mock_requests.register_uri( 'POST', "https://api.chartmogul.com/v1/data_sources", status_code=200, # whatever, not testing this json={'data_sources': []}) config = Config("token", "secret") DataSource.create(config, data={"test_date": date(2015, 1, 1)}).get() self.assertEqual(mock_requests.last_request.json(), {"test_date": u"2015-01-01"}) DataSource.create(config, data={ "test_datetime": datetime(2015, 1, 1, 1, 2, 3) }).get() self.assertEqual(mock_requests.last_request.json(), {'test_datetime': u'2015-01-01T01:02:03'})
def test_requests_retry_session_on_resource(self): httpretty.register_uri(httpretty.POST, "https://api.chartmogul.com/v1/data_sources", responses=[ httpretty.Response(body='{}', status=500), httpretty.Response(body='{}', status=500), httpretty.Response(body='{}', status=500), httpretty.Response(body='{}', status=500), httpretty.Response(body='{}', status=200), ]) # max_retries set as 4 # backoff_factor set as 0 to avoid waiting while testing config = Config("token", "secret", None, 4, 0) try: DataSource.create(config, data={ "test_date": date(2015, 1, 1) }).get() except RetryError: self.fail("request raised retryError unexpectedly!")
def test_forget_uuid_retrieve(self, mock_requests): mock_requests.register_uri( 'GET', "https://api.chartmogul.com/v1/data_sources", status_code=200, json={ "data_sources": [{ "name": "test", "uuid": "my_uuid", "created_at": "2016-01-10 15:34:05", "status": "never_imported" }] }) config = Config("token", "secret") try: DataSource.retrieve(config).get() except ArgumentMissingError: pass else: self.fail('ArgumentMissingError not raised')
def test_destroy(self, mock_requests): mock_requests.register_uri( 'DELETE', "https://api.chartmogul.com/v1/data_sources/my_uuid", status_code=204) config = Config("token", "secret") res = DataSource.destroy(config, uuid="my_uuid").get() self.assertEqual(mock_requests.call_count, 1, "expected call") self.assertEqual(mock_requests.last_request.qs, {}) self.assertEqual(mock_requests.last_request.text, None) self.assertEqual(res, None)
def test_forget_uuid_destroy(self, mock_requests): mock_requests.register_uri( 'DELETE', "https://api.chartmogul.com/v1/data_sources/my_uuid", status_code=204) mock_requests.register_uri( 'DELETE', "https://api.chartmogul.com/v1/data_sources", status_code=404, text="Not found") config = Config("token", "secret") try: res = DataSource.destroy(config).get() except ArgumentMissingError: pass else: self.fail('ArgumentMissingError not raised')
def test_create(self, mock_requests): mock_requests.register_uri( 'POST', "https://api.chartmogul.com/v1/data_sources", status_code=200, json={ "name": "test", "uuid": "my_uuid", "created_at": "2016-01-10T15:34:05.144Z", "status": "never_imported" }) config = Config("token", "secret") ds = DataSource.create(config, data={"name": "test"}).get() self.assertEqual(mock_requests.call_count, 1, "expected call") self.assertEqual(mock_requests.last_request.qs, {}) self.assertEqual(mock_requests.last_request.json(), {"name": "test"}) # Direct comparison impossible because of tzinfo difference between 2.7 and 3.3+ self.assertTrue(isinstance(ds, DataSource)) self.assertTrue(isinstance(ds.created_at, datetime)) self.assertEqual(ds.uuid, u"my_uuid")
def test_delete_invoice(self): result = (DataSource.create(config, data={ 'name': 'Test' }).then(_create_plan).then(_create_invoice).then( _delete_invoice).get()) print(result)