summaryrefslogtreecommitdiffstats
path: root/tests/test_sql_upgrade.py
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2012-11-06 17:16:56 -0500
committerAdam Young <ayoung@redhat.com>2012-11-27 11:06:11 -0500
commit1012bd42df5906bca67a82663f23b5c8a4eafe68 (patch)
tree48171a462d1f0978528945aa8c06fc171e6bf482 /tests/test_sql_upgrade.py
parent07c1aafdf20db6d6d7c0d3e15074bc02e2f1d2aa (diff)
downloadkeystone-1012bd42df5906bca67a82663f23b5c8a4eafe68.tar.gz
keystone-1012bd42df5906bca67a82663f23b5c8a4eafe68.tar.xz
keystone-1012bd42df5906bca67a82663f23b5c8a4eafe68.zip
normalize identity
modify tables by adding columns, and modify entities by adding attributes for password, description and enabled update tests to deal with change from 'False' and 'True' to the python values False and True Added a Text type from SQL Alchemy Bug 1070351 Bug 1023544 Change-Id: I066c788b5d08a8f42a9b5412ea9e29e4fe9ba205
Diffstat (limited to 'tests/test_sql_upgrade.py')
-rw-r--r--tests/test_sql_upgrade.py53
1 files changed, 51 insertions, 2 deletions
diff --git a/tests/test_sql_upgrade.py b/tests/test_sql_upgrade.py
index 9b67fd5f..6ade77f7 100644
--- a/tests/test_sql_upgrade.py
+++ b/tests/test_sql_upgrade.py
@@ -19,6 +19,7 @@ import json
from migrate.versioning import api as versioning_api
import sqlalchemy
+from sqlalchemy.orm import sessionmaker
from keystone.common import sql
from keystone import config
@@ -84,6 +85,45 @@ class SqlUpgradeTests(test.TestCase):
self.assertTableExists('policy')
self.assertTableColumns('policy', ['id', 'type', 'blob', 'extra'])
+ def test_upgrade_7_to_9(self):
+
+ self.assertEqual(self.schema.version, 0)
+ self._migrate(self.repo_path, 7)
+ self.populate_user_table()
+ self.populate_tenant_table()
+ self._migrate(self.repo_path, 9)
+ self.assertEqual(self.schema.version, 9)
+ self.assertTableColumns("user",
+ ["id", "name", "extra", "password",
+ "enabled"])
+ self.assertTableColumns("tenant",
+ ["id", "name", "extra", "description",
+ "enabled"])
+ self.assertTableColumns("role", ["id", "name", "extra"])
+ self.assertTableColumns("user_tenant_membership",
+ ["user_id", "tenant_id"])
+ self.assertTableColumns("metadata", ["user_id", "tenant_id", "data"])
+ maker = sessionmaker(bind=self.engine)
+ session = maker()
+ user_table = sqlalchemy.Table("user",
+ self.metadata,
+ autoload=True)
+ a_user = session.query(user_table).filter("id='foo'").one()
+ self.assertTrue(a_user.enabled)
+ a_user = session.query(user_table).filter("id='badguy'").one()
+ self.assertFalse(a_user.enabled)
+ tenant_table = sqlalchemy.Table("tenant",
+ self.metadata,
+ autoload=True)
+ a_tenant = session.query(tenant_table).filter("id='baz'").one()
+ self.assertEqual(a_tenant.description, 'description')
+ session.commit()
+
+ def test_downgrade_9_to_7(self):
+ self.assertEqual(self.schema.version, 0)
+ self._migrate(self.repo_path, 9)
+ self._migrate(self.repo_path, 7, False)
+
def populate_user_table(self):
for user in default_fixtures.USERS:
extra = copy.deepcopy(user)
@@ -94,6 +134,16 @@ class SqlUpgradeTests(test.TestCase):
user['name'],
json.dumps(extra)))
+ def populate_tenant_table(self):
+ for tenant in default_fixtures.TENANTS:
+ extra = copy.deepcopy(tenant)
+ extra.pop('id')
+ extra.pop('name')
+ self.engine.execute("insert into tenant values ('%s', '%s', '%s')"
+ % (tenant['id'],
+ tenant['name'],
+ json.dumps(extra)))
+
def select_table(self, name):
table = sqlalchemy.Table(name,
self.metadata,
@@ -117,8 +167,7 @@ class SqlUpgradeTests(test.TestCase):
else:
raise AssertionError('Table "%s" already exists' % table_name)
- def _migrate(self, repository, version):
- upgrade = True
+ def _migrate(self, repository, version, upgrade=True):
err = ""
version = versioning_api._migrate_version(self.schema,
version,