cd7b1e9611f763ef06c3dedca920202a6478c5a7
[arvados.git] / sdk / python / tests / test_api.py
1 #!/usr/bin/env python
2
3 import arvados
4 import httplib2
5 import json
6 import mimetypes
7 import unittest
8
9 from apiclient.http import RequestMockBuilder
10 from httplib import responses as HTTP_RESPONSES
11
12 if not mimetypes.inited:
13     mimetypes.init()
14
15 class ArvadosApiClientTest(unittest.TestCase):
16     @classmethod
17     def setUpClass(cls):
18         # The apiclient library has support for mocking requests for
19         # testing, but it doesn't extend to the discovery document
20         # itself.  Point it at a known stable discovery document for now.
21         # FIXME: Figure out a better way to stub this out.
22         cls.orig_api_host = arvados.config.get('ARVADOS_API_HOST')
23         arvados.config.settings()['ARVADOS_API_HOST'] = 'qr1hi.arvadosapi.com'
24         mock_responses = {
25             'arvados.humans.list': (None, json.dumps(
26                     {'items_available': 0, 'items': []})),
27             }
28         req_builder = RequestMockBuilder(mock_responses)
29         cls.api = arvados.api('v1', False, requestBuilder=req_builder)
30
31     @classmethod
32     def tearDownClass(cls):
33         if cls.orig_api_host is None:
34             del arvados.config.settings()['ARVADOS_API_HOST']
35         else:
36             arvados.config.settings()['ARVADOS_API_HOST'] = cls.orig_api_host
37         # Prevent other tests from using our mocked API client.
38         arvados.uncache_api('v1')
39
40     def test_basic_list(self):
41         answer = self.api.humans().list(
42             filters=[['uuid', 'is', None]]).execute()
43         self.assertEqual(answer['items_available'], len(answer['items']))
44
45
46 if __name__ == '__main__':
47     unittest.main()