Move DisableModuleFixture to utils
Move DisableModuleFixture to test utilities instead of auth token middleware tests, so it can be reused for the oauthlib tests. implements: bp add-oauth-support Change-Id: I09723a9f0e28e73e1aa31072e514f5fae2173100
This commit is contained in:
parent
fb63cd41fe
commit
2535f9e0e9
|
@ -18,7 +18,6 @@ import json
|
|||
import os
|
||||
import shutil
|
||||
import stat
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
import uuid
|
||||
|
@ -38,6 +37,7 @@ from keystoneclient.openstack.common import jsonutils
|
|||
from keystoneclient.openstack.common import memorycache
|
||||
from keystoneclient.openstack.common import timeutils
|
||||
from keystoneclient.tests import client_fixtures
|
||||
from keystoneclient.tests import utils
|
||||
|
||||
|
||||
EXPECTED_V2_DEFAULT_ENV_RESPONSE = {
|
||||
|
@ -123,17 +123,6 @@ def memcached_available():
|
|||
return MEMCACHED_AVAILABLE
|
||||
|
||||
|
||||
class NoModuleFinder(object):
|
||||
"""Disallow further imports of 'module'."""
|
||||
|
||||
def __init__(self, module):
|
||||
self.module = module
|
||||
|
||||
def find_module(self, fullname, path):
|
||||
if fullname == self.module or fullname.startswith(self.module + '.'):
|
||||
raise ImportError
|
||||
|
||||
|
||||
def cleanup_revoked_file(filename):
|
||||
try:
|
||||
os.remove(filename)
|
||||
|
@ -141,42 +130,6 @@ def cleanup_revoked_file(filename):
|
|||
pass
|
||||
|
||||
|
||||
class DisableModuleFixture(fixtures.Fixture):
|
||||
"""A fixture to provide support for unloading/disabling modules."""
|
||||
|
||||
def __init__(self, module, *args, **kw):
|
||||
super(DisableModuleFixture, self).__init__(*args, **kw)
|
||||
self.module = module
|
||||
self._finders = []
|
||||
self._cleared_modules = {}
|
||||
|
||||
def tearDown(self):
|
||||
super(DisableModuleFixture, self).tearDown()
|
||||
for finder in self._finders:
|
||||
sys.meta_path.remove(finder)
|
||||
sys.modules.update(self._cleared_modules)
|
||||
|
||||
def clear_module(self):
|
||||
cleared_modules = {}
|
||||
for fullname in sys.modules.keys():
|
||||
if (fullname == self.module or
|
||||
fullname.startswith(self.module + '.')):
|
||||
cleared_modules[fullname] = sys.modules.pop(fullname)
|
||||
return cleared_modules
|
||||
|
||||
def setUp(self):
|
||||
"""Ensure ImportError for the specified module."""
|
||||
|
||||
super(DisableModuleFixture, self).setUp()
|
||||
|
||||
# Clear 'module' references in sys.modules
|
||||
self._cleared_modules.update(self.clear_module())
|
||||
|
||||
finder = NoModuleFinder(self.module)
|
||||
self._finders.append(finder)
|
||||
sys.meta_path.insert(0, finder)
|
||||
|
||||
|
||||
class TimezoneFixture(fixtures.Fixture):
|
||||
@staticmethod
|
||||
def supported():
|
||||
|
@ -398,7 +351,7 @@ class NoMemcacheAuthToken(BaseAuthTokenMiddlewareTest):
|
|||
|
||||
def setUp(self):
|
||||
super(NoMemcacheAuthToken, self).setUp()
|
||||
self.useFixture(DisableModuleFixture('memcache'))
|
||||
self.useFixture(utils.DisableModuleFixture('memcache'))
|
||||
|
||||
def test_nomemcache(self):
|
||||
conf = {
|
||||
|
|
|
@ -144,3 +144,50 @@ class TestResponse(requests.Response):
|
|||
@property
|
||||
def text(self):
|
||||
return self.content
|
||||
|
||||
|
||||
class DisableModuleFixture(fixtures.Fixture):
|
||||
"""A fixture to provide support for unloading/disabling modules."""
|
||||
|
||||
def __init__(self, module, *args, **kw):
|
||||
super(DisableModuleFixture, self).__init__(*args, **kw)
|
||||
self.module = module
|
||||
self._finders = []
|
||||
self._cleared_modules = {}
|
||||
|
||||
def tearDown(self):
|
||||
super(DisableModuleFixture, self).tearDown()
|
||||
for finder in self._finders:
|
||||
sys.meta_path.remove(finder)
|
||||
sys.modules.update(self._cleared_modules)
|
||||
|
||||
def clear_module(self):
|
||||
cleared_modules = {}
|
||||
for fullname in sys.modules.keys():
|
||||
if (fullname == self.module or
|
||||
fullname.startswith(self.module + '.')):
|
||||
cleared_modules[fullname] = sys.modules.pop(fullname)
|
||||
return cleared_modules
|
||||
|
||||
def setUp(self):
|
||||
"""Ensure ImportError for the specified module."""
|
||||
|
||||
super(DisableModuleFixture, self).setUp()
|
||||
|
||||
# Clear 'module' references in sys.modules
|
||||
self._cleared_modules.update(self.clear_module())
|
||||
|
||||
finder = NoModuleFinder(self.module)
|
||||
self._finders.append(finder)
|
||||
sys.meta_path.insert(0, finder)
|
||||
|
||||
|
||||
class NoModuleFinder(object):
|
||||
"""Disallow further imports of 'module'."""
|
||||
|
||||
def __init__(self, module):
|
||||
self.module = module
|
||||
|
||||
def find_module(self, fullname, path):
|
||||
if fullname == self.module or fullname.startswith(self.module + '.'):
|
||||
raise ImportError
|
||||
|
|
Loading…
Reference in New Issue