From 55f2cdbe291542c7cb92f16d804957e1bd91be26 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Mon, 24 Dec 2012 23:36:10 -0600 Subject: [PATCH] Use testtools instead of unittest for base classes. part of blueprint grizzle-testtools Change-Id: Ic9b438b4224d945e080d1d6071742ddc47ee81ed --- HACKING | 2 +- tests/test_auth_token_middleware.py | 15 ++++++++------- tests/test_ec2utils.py | 8 +++----- tests/test_shell.py | 27 ++++++++++++++------------- tests/utils.py | 10 +++++----- tests/v3/test_endpoints.py | 13 +++++++------ tests/v3/utils.py | 12 ++++++------ tools/test-requires | 3 ++- 8 files changed, 46 insertions(+), 44 deletions(-) diff --git a/HACKING b/HACKING index cb6623ed2..8f990864c 100644 --- a/HACKING +++ b/HACKING @@ -41,8 +41,8 @@ Human Alphabetical Order Examples import logging import random import StringIO + import testtools import time - import unittest import httplib2 diff --git a/tests/test_auth_token_middleware.py b/tests/test_auth_token_middleware.py index 510da7c13..744a01837 100644 --- a/tests/test_auth_token_middleware.py +++ b/tests/test_auth_token_middleware.py @@ -19,7 +19,7 @@ import iso8601 import os import string import tempfile -import unittest2 as unittest +import testtools import webob @@ -335,9 +335,10 @@ class FakeApp(object): return resp(env, start_response) -class BaseAuthTokenMiddlewareTest(unittest.TestCase): +class BaseAuthTokenMiddlewareTest(testtools.TestCase): def setUp(self, expected_env=None): + super(BaseAuthTokenMiddlewareTest, self).setUp() expected_env = expected_env or {} conf = { @@ -537,8 +538,8 @@ class AuthTokenMiddlewareTest(test.NoModule, BaseAuthTokenMiddlewareTest): def test_verify_signed_token_raises_exception_for_revoked_token(self): self.middleware.token_revocation_list = self.get_revocation_list_json() - with self.assertRaises(auth_token.InvalidUserToken): - self.middleware.verify_signed_token(REVOKED_TOKEN) + self.assertRaises(auth_token.InvalidUserToken, + self.middleware.verify_signed_token, REVOKED_TOKEN) def test_verify_signed_token_succeeds_for_unrevoked_token(self): self.middleware.token_revocation_list = self.get_revocation_list_json() @@ -579,8 +580,8 @@ class AuthTokenMiddlewareTest(test.NoModule, BaseAuthTokenMiddlewareTest): def test_invalid_revocation_list_raises_service_error(self): globals()['SIGNED_REVOCATION_LIST'] = "{}" - with self.assertRaises(auth_token.ServiceError): - self.middleware.fetch_revocation_list() + self.assertRaises(auth_token.ServiceError, + self.middleware.fetch_revocation_list) def test_fetch_revocation_list(self): fetched_list = jsonutils.loads(self.middleware.fetch_revocation_list()) @@ -696,7 +697,7 @@ class AuthTokenMiddlewareTest(test.NoModule, BaseAuthTokenMiddlewareTest): self.assertFalse(auth_token.will_expire_soon(fortyseconds)) -class TokenEncodingTest(unittest.TestCase): +class TokenEncodingTest(testtools.TestCase): def test_unquoted_token(self): self.assertEqual('foo%20bar', auth_token.safe_quote('foo bar')) diff --git a/tests/test_ec2utils.py b/tests/test_ec2utils.py index 2885c4096..b0bd4df75 100644 --- a/tests/test_ec2utils.py +++ b/tests/test_ec2utils.py @@ -14,11 +14,12 @@ # License for the specific language governing permissions and limitations # under the License. -import unittest2 as unittest +import testtools + from keystoneclient.contrib.ec2.utils import Ec2Signer -class Ec2SignerTest(unittest.TestCase): +class Ec2SignerTest(testtools.TestCase): def setUp(self): super(Ec2SignerTest, self).setUp() @@ -26,9 +27,6 @@ class Ec2SignerTest(unittest.TestCase): self.secret = '89cdf9e94e2643cab35b8b8ac5a51f83' self.signer = Ec2Signer(self.secret) - def tearDown(self): - super(Ec2SignerTest, self).tearDown() - def test_generate_0(self): """Test generate function for v0 signature""" credentials = {'host': '127.0.0.1', diff --git a/tests/test_shell.py b/tests/test_shell.py index 06422424c..bd8fdf09d 100644 --- a/tests/test_shell.py +++ b/tests/test_shell.py @@ -1,6 +1,7 @@ import os import mock +import fixtures import requests from keystoneclient import shell as openstack_shell @@ -18,17 +19,21 @@ DEFAULT_AUTH_URL = 'http://127.0.0.1:5000/v2.0/' class ShellTest(utils.TestCase): + FAKE_ENV = { + 'OS_USERNAME': DEFAULT_USERNAME, + 'OS_PASSWORD': DEFAULT_PASSWORD, + 'OS_TENANT_ID': DEFAULT_TENANT_ID, + 'OS_TENANT_NAME': DEFAULT_TENANT_NAME, + 'OS_AUTH_URL': DEFAULT_AUTH_URL, + } + # Patch os.environ to avoid required auth info. def setUp(self): - global _old_env - fake_env = { - 'OS_USERNAME': DEFAULT_USERNAME, - 'OS_PASSWORD': DEFAULT_PASSWORD, - 'OS_TENANT_ID': DEFAULT_TENANT_ID, - 'OS_TENANT_NAME': DEFAULT_TENANT_NAME, - 'OS_AUTH_URL': DEFAULT_AUTH_URL, - } - _old_env, os.environ = os.environ, fake_env.copy() + + super(ShellTest, self).setUp() + for var in self.FAKE_ENV: + self.useFixture(fixtures.EnvironmentVariable(var, + self.FAKE_ENV[var])) # Make a fake shell object, a helping wrapper to call it, and a quick # way of asserting that certain API calls were made. @@ -36,10 +41,6 @@ class ShellTest(utils.TestCase): _shell = openstack_shell.OpenStackIdentityShell() shell = lambda cmd: _shell.main(cmd.split()) - def tearDown(self): - global _old_env - os.environ = _old_env - def test_help_unknown_command(self): self.assertRaises(exceptions.CommandError, shell, 'help foofoo') diff --git a/tests/utils.py b/tests/utils.py index d4b44aaa8..6e8dbaf85 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -2,12 +2,12 @@ import time import mox import requests -import unittest2 as unittest +import testtools from keystoneclient.v2_0 import client -class TestCase(unittest.TestCase): +class TestCase(testtools.TestCase): TEST_TENANT_ID = '1' TEST_TENANT_NAME = 'aTenant' TEST_TOKEN = 'aToken' @@ -82,12 +82,12 @@ class TestCase(unittest.TestCase): def tearDown(self): time.time = self._original_time - super(TestCase, self).tearDown() self.mox.UnsetStubs() self.mox.VerifyAll() + super(TestCase, self).tearDown() -class UnauthenticatedTestCase(unittest.TestCase): +class UnauthenticatedTestCase(testtools.TestCase): """ Class used as base for unauthenticated calls """ TEST_ROOT_URL = 'http://127.0.0.1:5000/' TEST_URL = '%s%s' % (TEST_ROOT_URL, 'v2.0') @@ -107,9 +107,9 @@ class UnauthenticatedTestCase(unittest.TestCase): def tearDown(self): time.time = self._original_time - super(UnauthenticatedTestCase, self).tearDown() self.mox.UnsetStubs() self.mox.VerifyAll() + super(UnauthenticatedTestCase, self).tearDown() class TestResponse(requests.Response): diff --git a/tests/v3/test_endpoints.py b/tests/v3/test_endpoints.py index d428b9148..29bf226da 100644 --- a/tests/v3/test_endpoints.py +++ b/tests/v3/test_endpoints.py @@ -1,3 +1,4 @@ +import testtools import uuid from keystoneclient.v3 import endpoints @@ -36,8 +37,8 @@ class EndpointTests(utils.TestCase, utils.CrudTests): def test_create_invalid_interface(self): ref = self.new_ref(interface=uuid.uuid4().hex) - with self.assertRaises(Exception): - self.manager.create(**utils.parameterize(ref)) + self.assertRaises(Exception, self.manager.create, + **utils.parameterize(ref)) def test_update_public_interface(self): ref = self.new_ref(interface='public') @@ -53,8 +54,8 @@ class EndpointTests(utils.TestCase, utils.CrudTests): def test_update_invalid_interface(self): ref = self.new_ref(interface=uuid.uuid4().hex) - with self.assertRaises(Exception): - self.manager.update(**utils.parameterize(ref)) + self.assertRaises(Exception, self.manager.update, + **utils.parameterize(ref)) def test_list_public_interface(self): interface = 'public' @@ -74,5 +75,5 @@ class EndpointTests(utils.TestCase, utils.CrudTests): def test_list_invalid_interface(self): interface = uuid.uuid4().hex expected_path = 'v3/%s?interface=%s' % (self.collection_key, interface) - with self.assertRaises(Exception): - self.manager.list(expected_path=expected_path, interface=interface) + self.assertRaises(Exception, self.manager.list, + expected_path=expected_path, interface=interface) diff --git a/tests/v3/utils.py b/tests/v3/utils.py index 3fec45784..e2a1412aa 100644 --- a/tests/v3/utils.py +++ b/tests/v3/utils.py @@ -6,7 +6,7 @@ import urlparse import mox import requests -import unittest2 as unittest +import testtools from keystoneclient.v3 import client @@ -31,7 +31,7 @@ class TestClient(client.Client): return json.dumps(entity, sort_keys=True) -class TestCase(unittest.TestCase): +class TestCase(testtools.TestCase): TEST_TENANT_NAME = 'aTenant' TEST_TOKEN = 'aToken' TEST_USER = 'test' @@ -58,12 +58,12 @@ class TestCase(unittest.TestCase): def tearDown(self): time.time = self._original_time - super(TestCase, self).tearDown() self.mox.UnsetStubs() self.mox.VerifyAll() + super(TestCase, self).tearDown() -class UnauthenticatedTestCase(unittest.TestCase): +class UnauthenticatedTestCase(testtools.TestCase): """ Class used as base for unauthenticated calls """ TEST_ROOT_URL = 'http://127.0.0.1:5000/' TEST_URL = '%s%s' % (TEST_ROOT_URL, 'v3') @@ -83,12 +83,12 @@ class UnauthenticatedTestCase(unittest.TestCase): def tearDown(self): time.time = self._original_time - super(UnauthenticatedTestCase, self).tearDown() self.mox.UnsetStubs() self.mox.VerifyAll() + super(UnauthenticatedTestCase, self).tearDown() -class CrudTests(object): +class CrudTests(testtools.TestCase): key = None collection_key = None model = None diff --git a/tools/test-requires b/tools/test-requires index caa6e2c20..2eaef06eb 100644 --- a/tools/test-requires +++ b/tools/test-requires @@ -1,6 +1,7 @@ distribute>=0.6.24 coverage +fixtures keyring mock mox @@ -10,7 +11,7 @@ openstack.nose_plugin nosehtmloutput pep8==1.3.3 sphinx>=1.1.2 -unittest2>=0.5.1 +testtools>=0.9.22 WebOb==1.0.8 iso8601>=0.1.4