summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortermie <github@anarkystic.com>2011-12-27 12:06:14 -0800
committertermie <github@anarkystic.com>2011-12-27 12:17:01 -0800
commit8425eabe6ffb9dcdfe205d559ca33e5cbf749428 (patch)
treefe5e25e410dfe32e2865e2e71fede7561a62f616
parent7541ed49954dea081ecb3aa97246b42b4f3c92c3 (diff)
downloadkeystone-8425eabe6ffb9dcdfe205d559ca33e5cbf749428.tar.gz
keystone-8425eabe6ffb9dcdfe205d559ca33e5cbf749428.tar.xz
keystone-8425eabe6ffb9dcdfe205d559ca33e5cbf749428.zip
add basic fixture functionality
-rw-r--r--keystonelight/models.py10
-rw-r--r--keystonelight/test.py31
-rw-r--r--tests/default_fixtures.py16
-rw-r--r--tests/test_backend_kvs.py17
4 files changed, 59 insertions, 15 deletions
diff --git a/keystonelight/models.py b/keystonelight/models.py
index 08747cdd..a3028d46 100644
--- a/keystonelight/models.py
+++ b/keystonelight/models.py
@@ -15,3 +15,13 @@ class User(dict):
class Tenant(dict):
def __init__(self, id=None, *args, **kw):
super(Tenant, self).__init__(id=id, *args, **kw)
+
+
+class Role(dict):
+ def __init__(self, id=None, *args, **kw):
+ super(Role, self).__init__(id=id, *args, **kw)
+
+
+class Extras(dict):
+ def __init__(self, user=None, tenant=None, *args, **kw):
+ super(Extras, self).__init__(user=User, tenant=tenant, *args, **kw)
diff --git a/keystonelight/test.py b/keystonelight/test.py
index 72cc63ca..5e420e3e 100644
--- a/keystonelight/test.py
+++ b/keystonelight/test.py
@@ -8,6 +8,7 @@ import sys
from paste import deploy
from keystonelight import logging
+from keystonelight import models
from keystonelight import utils
from keystonelight import wsgi
@@ -84,6 +85,36 @@ class TestCase(unittest.TestCase):
sys.path.remove(path)
super(TestCase, self).tearDown()
+ def load_fixtures(self, fixtures):
+ """Really quite basic and naive fixture loading based on a python module.
+
+ Expects that the various APIs into the various services are already
+ defined on `self`.
+
+ """
+ # TODO(termie): doing something from json, probably based on Django's
+ # loaddata will be much preferred.
+ for tenant in fixtures.TENANTS:
+ rv = self.identity_api.create_tenant(
+ tenant['id'], models.Tenant(**tenant))
+ setattr(self, 'tenant_%s' % tenant['id'], rv)
+
+ for user in fixtures.USERS:
+ rv = self.identity_api.create_user(user['id'], models.User(**user))
+ setattr(self, 'user_%s' % user['id'], rv)
+
+ for role in fixtures.ROLES:
+ rv = self.identity_api.create_role(role['id'], models.Role(**role))
+ setattr(self, 'role_%s' % role['id'], rv)
+
+ for extras in fixtures.EXTRAS:
+ extras_ref = extras.copy()
+ del extras_ref['user']
+ del extras_ref['tenant']
+ rv = self.identity_api.create_extras(
+ extras['user'], extras['tenant'], models.Extras(**extras_ref))
+ setattr(self, 'extras_%s%s' % (extras['user'], extras['tenant']), rv)
+
def loadapp(self, config):
if not config.startswith('config:'):
config = 'config:%s.conf' % os.path.join(TESTSDIR, config)
diff --git a/tests/default_fixtures.py b/tests/default_fixtures.py
new file mode 100644
index 00000000..15a8b60a
--- /dev/null
+++ b/tests/default_fixtures.py
@@ -0,0 +1,16 @@
+TENANTS = [
+ {'id': 'bar', 'name': 'BAR'},
+ ]
+
+USERS = [
+ {'id': 'foo', 'name': 'FOO', 'password': 'foo2', 'tenants': ['bar',]},
+ ]
+
+EXTRAS = [
+ {'user': 'foo', 'tenant': 'bar', 'extra': 'extra'},
+ ]
+
+#ROLES = [
+# {'id': 'keystone_admin', 'name': 'Keystone Admin'},
+# ]
+ROLES = []
diff --git a/tests/test_backend_kvs.py b/tests/test_backend_kvs.py
index 166bc6c6..df88733d 100644
--- a/tests/test_backend_kvs.py
+++ b/tests/test_backend_kvs.py
@@ -4,27 +4,14 @@ from keystonelight import models
from keystonelight import test
from keystonelight.backends import kvs
+import default_fixtures
class KvsIdentity(test.TestCase):
def setUp(self):
super(KvsIdentity, self).setUp()
options = self.appconfig('default')
self.identity_api = kvs.KvsIdentity(options=options, db={})
- self._load_fixtures()
-
- def _load_fixtures(self):
- self.tenant_bar = self.identity_api.create_tenant(
- 'bar',
- models.Tenant(id='bar', name='BAR'))
- self.user_foo = self.identity_api.create_user(
- 'foo',
- models.User(id='foo',
- name='FOO',
- password='foo2',
- tenants=[self.tenant_bar['id']]))
- self.extras_foobar = self.identity_api.create_extras(
- 'foo', 'bar',
- {'extra': 'extra'})
+ self.load_fixtures(default_fixtures)
def test_authenticate_bad_user(self):
self.assertRaises(AssertionError,