Issue is not reproduced on sqlite backend, which is obviously not a production one. Is reqproduced on the mysql. I put your code (slightly modified) to LdapIdentitySqlAssignment. def test_delete_domain_with_user_added(self): domain = {'id': uuid.uuid4().hex, 'name': uuid.uuid4().hex, 'enabled': True} project = {'id': uuid.uuid4().hex, 'name': uuid.uuid4().hex, 'domain_id': domain['id'], 'description': uuid.uuid4().hex, 'enabled': True } self.assignment_api.create_domain(domain['id'], domain) self.assignment_api.create_project(project['id'], project) project_ref = self.assignment_api.get_project(project['id']) self.assertDictEqual(project_ref, project) self.assignment_api.create_grant(user_id=self.user_foo['id'], project_id=project['id'], role_id=self.role_member['id']) self.assignment_api.delete_grant(user_id=self.user_foo['id'], project_id=project['id'], role_id=self.role_member['id']) self.assignment_api.delete_domain(domain['id']) self.assertRaises(exception.DomainNotFound, self.assignment_api.get_domain, domain['id']) Test pass ok But, when I changed config keystone/tests/backend_ldap_sql.conf #connection = sqlite:// connection = mysql://root:qwerty@127.0.0.1/keystone_test?charset=utf8 Issue was reproduced nosetests keystone.tests.test_backend_ldap:LdapIdentitySqlAssignment.test_delete_domain_with_user_added ====================================================================== ERROR: keystone.tests.test_backend_ldap.LdapIdentitySqlAssignment.test_delete_domain_with_user_added ---------------------------------------------------------------------- _StringException: traceback-1: {{{ Traceback (most recent call last): File "/opt/stack/keystone/keystone/tests/test_backend_ldap.py", line 965, in tearDown sql.ModelBase.metadata.drop_all(bind=self.engine) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/schema.py", line 2598, in drop_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 2302, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1972, in _run_visitor **kwargs).traverse_single(element) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/sql/visitors.py", line 106, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/ddl.py", line 130, in visit_metadata self.traverse_single(table, drop_ok=True) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/sql/visitors.py", line 106, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/ddl.py", line 173, in visit_table self.connection.execute(schema.DropTable(table)) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1449, in execute params) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1542, in _execute_ddl compiled File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1698, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1691, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/default.py", line 331, in do_execute cursor.execute(statement, parameters) File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute self.errorhandler(self, exc, value) File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue IntegrityError: (IntegrityError) (1217, 'Cannot delete or update a parent row: a foreign key constraint fails') '\nDROP TABLE domain' () }}}