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:
Steve Martinelli 2014-05-13 15:56:22 -04:00
parent fb63cd41fe
commit 2535f9e0e9
2 changed files with 49 additions and 49 deletions

View File

@ -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 = {

View File

@ -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