diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/utils.py | 27 | ||||
| -rw-r--r-- | tests/v2_0/test_discovery.py | 105 |
2 files changed, 130 insertions, 2 deletions
diff --git a/tests/utils.py b/tests/utils.py index c4530e8..04c5890 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -12,8 +12,10 @@ class TestCase(unittest.TestCase): TEST_TENANT_NAME = 'aTenant' TEST_TOKEN = 'aToken' TEST_USER = 'test' - TEST_URL = 'http://127.0.0.1:5000/v2.0' - TEST_ADMIN_URL = 'http://127.0.0.1:35357/v2.0' + TEST_ROOT_URL = 'http://127.0.0.1:5000/' + TEST_URL = '%s%s' % (TEST_ROOT_URL, 'v2.0') + TEST_ROOT_ADMIN_URL = 'http://127.0.0.1:35357/' + TEST_ADMIN_URL = '%s%s' % (TEST_ROOT_ADMIN_URL, 'v2.0') TEST_SERVICE_CATALOG = [{ "endpoints": [{ @@ -79,3 +81,24 @@ class TestCase(unittest.TestCase): super(TestCase, self).tearDown() self.mox.UnsetStubs() self.mox.VerifyAll() + + +class UnauthenticatedTestCase(unittest.TestCase): + """ Class used as base for unauthenticated calls """ + TEST_ROOT_URL = 'http://127.0.0.1:5000/' + TEST_URL = '%s%s' % (TEST_ROOT_URL, 'v2.0') + TEST_ROOT_ADMIN_URL = 'http://127.0.0.1:35357/' + TEST_ADMIN_URL = '%s%s' % (TEST_ROOT_ADMIN_URL, 'v2.0') + + def setUp(self): + super(UnauthenticatedTestCase, self).setUp() + self.mox = mox.Mox() + self._original_time = time.time + time.time = lambda: 1234 + httplib2.Http.request = self.mox.CreateMockAnything() + + def tearDown(self): + time.time = self._original_time + super(UnauthenticatedTestCase, self).tearDown() + self.mox.UnsetStubs() + self.mox.VerifyAll() diff --git a/tests/v2_0/test_discovery.py b/tests/v2_0/test_discovery.py new file mode 100644 index 0000000..0e089ac --- /dev/null +++ b/tests/v2_0/test_discovery.py @@ -0,0 +1,105 @@ +import httplib2 +import json + +from keystoneclient.generic import client +from tests import utils + + +def to_http_response(resp_dict): + """ + Utility function to convert a python dictionary + (e.g. {'status':status, 'body': body, 'headers':headers} + to an httplib2 response. + """ + resp = httplib2.Response(resp_dict) + for k, v in resp_dict['headers'].items(): + resp[k] = v + return resp + + +class DiscoverKeystoneTests(utils.UnauthenticatedTestCase): + def setUp(self): + super(DiscoverKeystoneTests, self).setUp() + self.TEST_RESPONSE_DICT = { + "versions": { + "values": [{ + "id": "v2.0", + "status": "beta", + "updated": "2011-11-19T00:00:00Z", + "links": [{ + "rel": "self", + "href": "http://127.0.0.1:5000/v2.0/" + }, { + "rel": "describedby", + "type": "text/html", + "href": + "http://docs.openstack.org/api/openstack-identity-service/2.0/content/" + }, { + "rel": "describedby", + "type": "application/pdf", + "href": + "http://docs.openstack.org/api/openstack-identity-service/2.0/\ +identity-dev-guide-2.0.pdf" + }, { + "rel": "describedby", + "type": "application/vnd.sun.wadl+xml", + "href": "http://127.0.0.1:5000/v2.0/identity.wadl" + }], + "media-types": [{ + "base": "application/xml", + "type": + "application/vnd.openstack.identity-v2.0+xml" + }, { + "base": "application/json", + "type": + "application/vnd.openstack.identity-v2.0+json" + }] + }] + } + } + self.TEST_REQUEST_HEADERS = { + 'User-Agent': 'python-keystoneclient', + 'Accept': 'application/json' + } + + def test_get_versions(self): + resp = httplib2.Response({ + "status": 200, + "body": json.dumps(self.TEST_RESPONSE_DICT), + }) + + httplib2.Http.request(self.TEST_ROOT_URL, + 'GET', + headers=self.TEST_REQUEST_HEADERS) \ + .AndReturn((resp, resp['body'])) + self.mox.ReplayAll() + + cs = client.Client() + versions = cs.discover(self.TEST_ROOT_URL) + self.assertIsInstance(versions, dict) + self.assertIn('message', versions) + self.assertIn('v2.0', versions) + self.assertEquals(versions['v2.0']['url'], + self.TEST_RESPONSE_DICT['versions']['values'][0]['links'][0] + ['href']) + + def test_get_version_local(self): + resp = httplib2.Response({ + "status": 200, + "body": json.dumps(self.TEST_RESPONSE_DICT), + }) + + httplib2.Http.request("http://localhost:35357", + 'GET', + headers=self.TEST_REQUEST_HEADERS) \ + .AndReturn((resp, resp['body'])) + self.mox.ReplayAll() + + cs = client.Client() + versions = cs.discover() + self.assertIsInstance(versions, dict) + self.assertIn('message', versions) + self.assertIn('v2.0', versions) + self.assertEquals(versions['v2.0']['url'], + self.TEST_RESPONSE_DICT['versions']['values'][0]['links'][0] + ['href']) |
