From 7aa8314f24324670693ef574076d280b41026c11 Mon Sep 17 00:00:00 2001 From: Dolph Mathews Date: Wed, 11 Sep 2013 12:47:39 -0500 Subject: [PATCH] Test upgrade migration 16->17 This test covers the use case described in bug 1131590, where a user_project_membership record cannot be upgraded past migration 16. Closes-Bug: 1224320 Change-Id: Ia1bd03d0e07de316631140d55231abe74decaac1 --- keystone/tests/test_sql_upgrade.py | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/keystone/tests/test_sql_upgrade.py b/keystone/tests/test_sql_upgrade.py index 2cbf498119..0c3933aea0 100644 --- a/keystone/tests/test_sql_upgrade.py +++ b/keystone/tests/test_sql_upgrade.py @@ -221,6 +221,44 @@ def test_upgrade_normalize_identity(self): session.commit() session.close() + def test_upgrade_user_tenant_membership_to_metadata(self): + self.upgrade(16) + self.assertTableColumns( + 'user_project_membership', + ['user_id', 'tenant_id']) + + user = { + 'id': uuid.uuid4().hex, + 'name': uuid.uuid4().hex, + 'domain_id': 'default', + 'extra': json.dumps({}), + } + project = { + 'id': uuid.uuid4().hex, + 'name': uuid.uuid4().hex, + 'domain_id': 'default', + 'extra': json.dumps({}), + } + metadata = { + 'user_id': user['id'], + 'tenant_id': project['id'], + } + session = self.Session() + self.insert_dict(session, 'user', user) + self.insert_dict(session, 'project', project) + self.insert_dict(session, 'user_project_membership', metadata) + + self.upgrade(17) + user_project_metadata_table = sqlalchemy.Table( + 'user_project_metadata', self.metadata, autoload=True) + + result = session.query(user_project_metadata_table).one() + self.assertEqual(result.user_id, user['id']) + self.assertEqual(result.project_id, project['id']) + self.assertEqual( + json.loads(result.data), + {'roles': [CONF.member_role_id]}) + def test_normalized_enabled_states(self): self.upgrade(8)