Fix oauth sqlite migration downgrade failure

The oauth migration downgrade was failing because it tried to drop
a constraint which sqlite doesn't support. The code tried to not do
the drop on sqlite but didn't check for the sqlite engine properly.

Change-Id: Ie7900d352a26900f913bdefe1eb93d511283efc0
Closes-Bug: #1366606
This commit is contained in:
Brant Knudson 2014-09-07 15:21:07 -05:00
parent bd6511d684
commit 6ae4d7713e
2 changed files with 38 additions and 11 deletions

View File

@ -50,5 +50,5 @@ def downgrade(migrate_engine):
{'table': access_token_table,
'fk_column': 'consumer_id',
'ref_column': consumer_table.c.id}]
if meta.bind != 'sqlite':
if migrate_engine.name != 'sqlite':
migration_helpers.remove_constraints(constraints)

View File

@ -62,11 +62,15 @@ class SqlUpgradeOAuth1Extension(test_sql_upgrade.SqlMigrateBase):
def repo_package(self):
return oauth1
def test_upgrade(self):
self.assertTableDoesNotExist('consumer')
self.assertTableDoesNotExist('request_token')
self.assertTableDoesNotExist('access_token')
self.upgrade(1, repository=self.repo_path)
def upgrade(self, version):
super(SqlUpgradeOAuth1Extension, self).upgrade(
version, repository=self.repo_path)
def downgrade(self, version):
super(SqlUpgradeOAuth1Extension, self).downgrade(
version, repository=self.repo_path)
def _assert_v1_3_tables(self):
self.assertTableColumns('consumer',
['id',
'description',
@ -90,8 +94,7 @@ class SqlUpgradeOAuth1Extension(test_sql_upgrade.SqlMigrateBase):
'consumer_id',
'expires_at'])
def test_downgrade(self):
self.upgrade(1, repository=self.repo_path)
def _assert_v4_later_tables(self):
self.assertTableColumns('consumer',
['id',
'description',
@ -103,7 +106,7 @@ class SqlUpgradeOAuth1Extension(test_sql_upgrade.SqlMigrateBase):
'verifier',
'authorizing_user_id',
'requested_project_id',
'requested_roles',
'role_ids',
'consumer_id',
'expires_at'])
self.assertTableColumns('access_token',
@ -111,10 +114,34 @@ class SqlUpgradeOAuth1Extension(test_sql_upgrade.SqlMigrateBase):
'access_secret',
'authorizing_user_id',
'project_id',
'requested_roles',
'role_ids',
'consumer_id',
'expires_at'])
self.downgrade(0, repository=self.repo_path)
def test_upgrade(self):
self.assertTableDoesNotExist('consumer')
self.assertTableDoesNotExist('request_token')
self.assertTableDoesNotExist('access_token')
self.upgrade(1)
self._assert_v1_3_tables()
# NOTE(blk-u): Migrations 2-3 don't modify the tables in a way that we
# can easily test for.
self.upgrade(4)
self._assert_v4_later_tables()
self.upgrade(5)
self._assert_v4_later_tables()
def test_downgrade(self):
self.upgrade(5)
self._assert_v4_later_tables()
self.downgrade(3)
self._assert_v1_3_tables()
self.downgrade(1)
self._assert_v1_3_tables()
self.downgrade(0)
self.assertTableDoesNotExist('consumer')
self.assertTableDoesNotExist('request_token')
self.assertTableDoesNotExist('access_token')