summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--keystone/client.py101
-rw-r--r--keystone/service.py (renamed from keystone/keystone_compat.py)1
-rwxr-xr-xrun_tests.sh2
-rw-r--r--tests/default.conf12
-rw-r--r--tests/keystone_compat_diablo.conf14
-rw-r--r--tests/test_identity_api.py162
6 files changed, 11 insertions, 281 deletions
diff --git a/keystone/client.py b/keystone/client.py
deleted file mode 100644
index 899e8d16..00000000
--- a/keystone/client.py
+++ /dev/null
@@ -1,101 +0,0 @@
-
-"""Client library for KeystoneLight API."""
-
-import json
-
-import httplib2
-import webob
-
-from keystone import service
-from keystone import wsgi
-
-
-URLMAP = service.URLMAP
-
-
-class Client(object):
- def __init__(self, token=None):
- self.token = token
-
- def request(self, method, path, headers, body):
- raise NotImplemented
-
- def get(self, path, headers=None):
- return self.request('GET', path=path, headers=headers)
-
- def post(self, path, headers=None, body=None):
- return self.request('POST', path=path, headers=headers, body=body)
-
- def put(self, path, headers=None, body=None):
- return self.request('PUT', path=path, headers=headers, body=body)
-
- def _build_headers(self, headers=None):
- if headers is None:
- headers = {}
-
- if self.token:
- headers.setdefault('X-Auth-Token', self.token)
-
- return headers
-
- def __getattr__(self, key):
- """Lazy way to define a bunch of dynamic urls based on URLMAP.
-
- Turns something like
-
- c.authenticate(user_id='foo', password='bar')
-
- into
-
- c.request('POST', '/token', body={'user_id': 'foo', 'password': 'bar'})
-
- """
- if key not in URLMAP:
- raise AttributeError(key)
-
- method, path = URLMAP[key]
-
- def _internal(method_=method, path_=path, **kw):
- path_ = path_ % kw
- params = {'method': method_,
- 'path': path_}
- if method.lower() in ('put', 'post'):
- params['body'] = kw
- return self.request(**params)
-
- setattr(self, key, _internal)
-
- return getattr(self, key)
-
-
-class HttpClient(Client):
- def __init__(self, endpoint=None, token=None):
- self.endpoint = endpoint
- super(HttpClient, self).__init__(token=token)
-
- def request(self, method, path, headers=None, body=None):
- if type(body) is type({}):
- body = json.dumps(body)
- headers = self._build_headers(headers)
- h = httplib2.Http()
- url = '%s%s' % (self.endpoint, path)
- resp, content = h.request(url, method=method, headers=headers, body=body)
- return webob.Response(content, status=resp.status, headerlist=resp.items())
-
-
-class TestClient(Client):
- def __init__(self, app=None, token=None):
- self.app = app
- super(TestClient, self).__init__(token=token)
-
- def request(self, method, path, headers=None, body=None):
- if type(body) is type({}):
- body = json.dumps(body)
- headers = self._build_headers(headers)
- req = wsgi.Request.blank(path)
- req.method = method
- for k, v in headers.iteritems():
- req.headers[k] = v
- if body:
- req.body = body
- return req.get_response(self.app)
diff --git a/keystone/keystone_compat.py b/keystone/service.py
index 95e05400..7bdd5d26 100644
--- a/keystone/keystone_compat.py
+++ b/keystone/service.py
@@ -14,7 +14,6 @@ from keystone import catalog
from keystone import identity
from keystone import logging
from keystone import policy
-from keystone import service
from keystone import token
from keystone import utils
from keystone import wsgi
diff --git a/run_tests.sh b/run_tests.sh
index be245a9a..825d9501 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -4,7 +4,7 @@ set -eu
function usage {
echo "Usage: $0 [OPTION]..."
- echo "Run KeystoneLight's test suite(s)"
+ echo "Run Keystone's test suite(s)"
echo ""
echo " -V, --virtual-env Always use virtualenv. Install automatically if not present"
echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local environment"
diff --git a/tests/default.conf b/tests/default.conf
index a92b3943..f8771b97 100644
--- a/tests/default.conf
+++ b/tests/default.conf
@@ -38,19 +38,14 @@ paste.filter_factory = keystone.middleware:AdminTokenAuthMiddleware.factory
paste.filter_factory = keystone.middleware:JsonBodyMiddleware.factory
[filter:crud_extension]
-paste.filter_factory = keystone.keystone_compat:AdminCrudExtension.factory
+paste.filter_factory = keystone.service:AdminCrudExtension.factory
-[app:keystone]
-paste.app_factory = keystone.service:app_factory
[app:keystone_service]
-paste.app_factory = keystone.keystone_compat:service_app_factory
+paste.app_factory = keystone.service:service_app_factory
[app:keystone_admin]
-paste.app_factory = keystone.keystone_compat:admin_app_factory
-
-[pipeline:keystone_api]
-pipeline = token_auth admin_token_auth json_body debug keystone
+paste.app_factory = keystone.service:admin_app_factory
[pipeline:keystone_service_api]
pipeline = token_auth admin_token_auth json_body debug keystone_service
@@ -60,7 +55,6 @@ pipeline = token_auth admin_token_auth json_body debug crud_extension keystone_a
[composite:main]
use = egg:Paste#urlmap
-/ = keystone_api
/v2.0 = keystone_service_api
[composite:admin]
diff --git a/tests/keystone_compat_diablo.conf b/tests/keystone_compat_diablo.conf
index 842bb810..5db43f6f 100644
--- a/tests/keystone_compat_diablo.conf
+++ b/tests/keystone_compat_diablo.conf
@@ -28,17 +28,13 @@ paste.filter_factory = keystone.middleware:AdminTokenAuthMiddleware.factory
[filter:json_body]
paste.filter_factory = keystone.middleware:JsonBodyMiddleware.factory
-[app:keystone]
-paste.app_factory = keystone.service:app_factory
[app:keystone_service]
-paste.app_factory = keystone.keystone_compat:service_app_factory
+paste.app_factory = keystone.service:service_app_factory
[app:keystone_admin]
-paste.app_factory = keystone.keystone_compat:admin_app_factory
+paste.app_factory = keystone.service:admin_app_factory
-[pipeline:keystone_api]
-pipeline = token_auth admin_token_auth json_body debug keystone
[pipeline:keystone_service_api]
pipeline = token_auth admin_token_auth json_body debug keystone_service
@@ -46,7 +42,11 @@ pipeline = token_auth admin_token_auth json_body debug keystone_service
[pipeline:keystone_admin_api]
pipeline = token_auth admin_token_auth json_body debug keystone_admin
+
[composite:main]
use = egg:Paste#urlmap
-/ = keystone_api
/v2.0 = keystone_service_api
+
+[composite:admin]
+use = egg:Paste#urlmap
+/v2.0 = keystone_admin_api
diff --git a/tests/test_identity_api.py b/tests/test_identity_api.py
deleted file mode 100644
index 50d813cf..00000000
--- a/tests/test_identity_api.py
+++ /dev/null
@@ -1,162 +0,0 @@
-import json
-
-from keystone import client
-from keystone import config
-from keystone import models
-from keystone import test
-
-import default_fixtures
-
-
-CONF = config.CONF
-
-
-class IdentityApi(test.TestCase):
- def setUp(self):
- super(IdentityApi, self).setUp()
- CONF(config_files=['default.conf'])
- self.app = self.loadapp('default')
-
- self.load_backends()
- self.load_fixtures(default_fixtures)
-
- def _login(self):
- c = client.TestClient(self.app)
- post_data = {'user_id': self.user_foo['id'],
- 'tenant_id': self.tenant_bar['id'],
- 'password': self.user_foo['password']}
- resp = c.post('/tokens', body=post_data)
- token = json.loads(resp.body)
- return token
-
- def test_authenticate(self):
- c = client.TestClient(self.app)
- post_data = {'user_id': self.user_foo['id'],
- 'tenant_id': self.tenant_bar['id'],
- 'password': self.user_foo['password']}
- resp = c.authenticate(**post_data)
- data = json.loads(resp.body)
- self.assertEquals(self.user_foo['id'], data['user']['id'])
- self.assertEquals(self.tenant_bar['id'], data['tenant']['id'])
- self.assertDictEquals(self.metadata_foobar, data['metadata'])
-
- def test_authenticate_no_tenant(self):
- c = client.TestClient(self.app)
- post_data = {'user_id': self.user_foo['id'],
- 'password': self.user_foo['password']}
- resp = c.authenticate(**post_data)
- data = json.loads(resp.body)
- self.assertEquals(self.user_foo['id'], data['user']['id'])
- self.assertEquals(None, data['tenant'])
- self.assertEquals({}, data['metadata'])
-
- def test_get_tenants(self):
- token = self._login()
- c = client.TestClient(self.app, token['id'])
- resp = c.get_tenants(user_id=self.user_foo['id'])
- data = json.loads(resp.body)
- self.assertDictEquals(self.tenant_bar, data[0])
-
- def test_crud_user(self):
- token_id = CONF.admin_token
- c = client.TestClient(self.app, token=token_id)
- user_ref = models.User(name='FOO')
- resp = c.create_user(**user_ref)
- data = json.loads(resp.body)
- self.assert_(data['id'])
-
- get_resp = c.get_user(user_id=data['id'])
- get_data = json.loads(get_resp.body)
-
- self.assertDictEquals(data, get_data)
-
- update_resp = c.update_user(user_id=data['id'],
- name='FOO',
- id=data['id'],
- password='foo')
- update_data = json.loads(update_resp.body)
-
- self.assertEquals(data['id'], update_data['id'])
- self.assertEquals('foo', update_data['password'])
-
- del_resp = c.delete_user(user_id=data['id'])
- self.assertEquals(del_resp.body, '')
-
- delget_resp = c.get_user(user_id=data['id'])
- self.assertEquals(delget_resp.body, '')
- # TODO(termie): we should probably return not founds instead of None
- #self.assertEquals(delget_resp.status, '404 Not Found')
-
- def test_crud_tenant(self):
- token_id = CONF.admin_token
- c = client.TestClient(self.app, token=token_id)
- tenant_ref = models.Tenant(name='BAZ')
- resp = c.create_tenant(**tenant_ref)
- data = json.loads(resp.body)
- self.assert_(data['id'])
-
- get_resp = c.get_tenant(tenant_id=data['id'])
- get_data = json.loads(get_resp.body)
- self.assertDictEquals(data, get_data)
-
- getname_resp = c.get_tenant_by_name(tenant_name=data['name'])
- getname_data = json.loads(getname_resp.body)
- self.assertDictEquals(data, getname_data)
-
- update_resp = c.update_tenant(tenant_id=data['id'],
- id=data['id'],
- name='NEWBAZ')
- update_data = json.loads(update_resp.body)
-
- self.assertEquals(data['id'], update_data['id'])
- self.assertEquals('NEWBAZ', update_data['name'])
-
- # make sure we can't get the old name
- getname_resp = c.get_tenant_by_name(tenant_name=data['name'])
- self.assertEquals(getname_resp.body, '')
-
- # but can get the new name
- getname_resp = c.get_tenant_by_name(tenant_name=update_data['name'])
- getname_data = json.loads(getname_resp.body)
- self.assertDictEquals(update_data, getname_data)
-
- del_resp = c.delete_tenant(tenant_id=data['id'])
- self.assertEquals(del_resp.body, '')
-
- delget_resp = c.get_tenant(tenant_id=data['id'])
- self.assertEquals(delget_resp.body, '')
-
- delgetname_resp = c.get_tenant_by_name(tenant_name=update_data['name'])
- self.assertEquals(delgetname_resp.body, '')
- # TODO(termie): we should probably return not founds instead of None
- #self.assertEquals(delget_resp.status, '404 Not Found')
-
- def test_crud_metadata(self):
- token_id = CONF.admin_token
- user_id = 'foo'
- tenant_id = 'bar'
- c = client.TestClient(self.app, token=token_id)
- metadata_ref = dict(baz='qaz')
- resp = c.create_metadata(user_id=user_id, tenant_id=tenant_id, **metadata_ref)
- data = json.loads(resp.body)
- self.assertEquals(data['baz'], 'qaz')
-
- get_resp = c.get_metadata(user_id=user_id, tenant_id=tenant_id)
- get_data = json.loads(get_resp.body)
-
- self.assertDictEquals(data, get_data)
-
- update_resp = c.update_metadata(user_id=user_id,
- tenant_id=tenant_id,
- baz='WAZ')
- update_data = json.loads(update_resp.body)
-
- self.assertEquals('WAZ', update_data['baz'])
-
- del_resp = c.delete_metadata(user_id=user_id, tenant_id=tenant_id)
- self.assertEquals(del_resp.body, '')
-
- delget_resp = c.get_metadata(user_id=user_id, tenant_id=tenant_id)
- self.assertEquals(delget_resp.body, '')
- # TODO(termie): we should probably return not founds instead of None
- #self.assertEquals(delget_resp.status, '404 Not Found')