From b5ed7916d31f7d55b8704dafcc16ac9dd0535c22 Mon Sep 17 00:00:00 2001 From: Mark Gius Date: Fri, 22 Jul 2011 14:52:18 -0700 Subject: [PATCH] Cleans up test code a bit. Remove unused imports, unused variables, and some unneeded helper classes. Move view-specific testing code into the view test base class. --- django-openstack/django_openstack/test.py | 83 ++++++++----------- .../tests/view_tests/auth_tests.py | 1 - .../django_openstack/tests/view_tests/base.py | 53 ++++++++++-- .../tests/view_tests/dash/container_tests.py | 5 +- .../tests/view_tests/dash/images_tests.py | 22 +++-- .../tests/view_tests/dash/instance_tests.py | 8 +- .../tests/view_tests/dash/keypair_tests.py | 6 +- 7 files changed, 103 insertions(+), 75 deletions(-) diff --git a/django-openstack/django_openstack/test.py b/django-openstack/django_openstack/test.py index e9e2fd715..ce89fbfd8 100644 --- a/django-openstack/django_openstack/test.py +++ b/django-openstack/django_openstack/test.py @@ -1,60 +1,53 @@ # vim: tabstop=4 shiftwidth=4 softtabstop=4 from django import http -from django import shortcuts from django import test -from django.conf import settings import mox from django_openstack.middleware import keystone -def fake_render_to_response(template_name, context, context_instance=None, - mimetype='text/html'): - """Replacement for render_to_response so that views can be tested - without having to stub out templates that belong in the frontend - implementation. - - Should be able to be tested using the django unit test assertions like a - normal render_to_response return value can be. - """ - class Template(object): - def __init__(self, name): - self.name = name - - if context_instance is None: - context_instance = django_template.Context(context) - else: - context_instance.update(context) - - resp = http.HttpResponse() - template = Template(template_name) - - resp.write('

' - 'This is a fake httpresponse for testing purposes only' - '

') - - # Allows django.test.client to populate fields on the response object - test.signals.template_rendered.send(template, template=template, - context=context_instance) - - return resp - - class TestCase(test.TestCase): - TEST_PROJECT = 'test' - TEST_REGION = 'test' TEST_STAFF_USER = 'staffUser' TEST_TENANT = 'aTenant' TEST_TOKEN = 'aToken' TEST_USER = 'test' - TEST_SERVICE_CATALOG = {'cdn': [{'adminURL': 'http://cdn.admin-nets.local/v1.1/1234', 'region': 'RegionOne', 'internalURL': 'http://127.0.0.1:7777/v1.1/1234', 'publicURL': 'http://cdn.publicinternets.com/v1.1/1234'}], 'nova_compat': [{'adminURL': 'http://127.0.0.1:8774/v1.0', 'region': 'RegionOne', 'internalURL': 'http://localhost:8774/v1.0', 'publicURL': 'http://nova.publicinternets.com/v1.0/'}], 'nova': [{'adminURL': 'http://nova/novapi/admin', 'region': 'RegionOne', 'internalURL': 'http://nova/novapi/internal', 'publicURL': 'http://nova/novapi/public'}], 'keystone': [{'adminURL': 'http://127.0.0.1:8081/v2.0', 'region': 'RegionOne', 'internalURL': 'http://127.0.0.1:8080/v2.0', 'publicURL': 'http://keystone.publicinternets.com/v2.0'}], 'glance': [{'adminURL': 'http://glance/glanceapi/admin', 'region': 'RegionOne', 'internalURL': 'http://glance/glanceapi/internal', 'publicURL': 'http://glance/glanceapi/public'}], 'swift': [{'adminURL': 'http://swift.admin-nets.local:8080/', 'region': 'RegionOne', 'internalURL': 'http://127.0.0.1:8080/v1/AUTH_1234', 'publicURL': 'http://swift.publicinternets.com/v1/AUTH_1234'}]} + TEST_SERVICE_CATALOG = \ + {'cdn': + [{'adminURL': 'http://cdn.admin-nets.local/v1.1/1234', + 'region': 'RegionOne', + 'internalURL': 'http://127.0.0.1:7777/v1.1/1234', + 'publicURL': 'http://cdn.publicinternets.com/v1.1/1234'}], + 'nova_compat': + [{'adminURL': 'http://127.0.0.1:8774/v1.0', + 'region': 'RegionOne', + 'internalURL': 'http://localhost:8774/v1.0', + 'publicURL': 'http://nova.publicinternets.com/v1.0/'}], + 'nova': + [{'adminURL': 'http://nova/novapi/admin', + 'region':'RegionOne', + 'internalURL': 'http://nova/novapi/internal', + 'publicURL': 'http://nova/novapi/public'}], + 'keystone': + [{'adminURL': 'http://127.0.0.1:8081/v2.0', + 'region': 'RegionOne', + 'internalURL': 'http://127.0.0.1:8080/v2.0', + 'publicURL': 'http://keystone.publicinternets.com/v2.0'}], + 'glance': + [{'adminURL': 'http://glance/glanceapi/admin', + 'region':'RegionOne', + 'internalURL': 'http://glance/glanceapi/internal', + 'publicURL': 'http://glance/glanceapi/public'}], + 'swift': + [{'adminURL': 'http://swift.admin-nets.local:8080/', + 'region': 'RegionOne', + 'internalURL': 'http://127.0.0.1:8080/v1/AUTH_1234', + 'publicURL': 'http://swift.publicinternets.com/v1/AUTH_1234'}], + } def setUp(self): self.mox = mox.Mox() - self._real_render_to_response = shortcuts.render_to_response - shortcuts.render_to_response = fake_render_to_response self._real_get_user_from_request = keystone.get_user_from_request self.setActiveUser(self.TEST_TOKEN, self.TEST_USER, self.TEST_TENANT, @@ -64,14 +57,10 @@ class TestCase(test.TestCase): def tearDown(self): self.mox.UnsetStubs() - shortcuts.render_to_response = self._real_render_to_response keystone.get_user_from_request = self._real_get_user_from_request - def assertRedirectsNoFollow(self, response, expected_url): - self.assertEqual(response._headers['location'], - ('Location', settings.TESTSERVER + expected_url)) - self.assertEqual(response.status_code, 302) - - def setActiveUser(self, token, username, tenant, is_admin, service_catalog): + def setActiveUser(self, token, username, + tenant, is_admin, service_catalog): keystone.get_user_from_request = \ - lambda x: keystone.User(token, username, tenant, is_admin, service_catalog) + lambda x: keystone.User(token, username, tenant, + is_admin, service_catalog) diff --git a/django-openstack/django_openstack/tests/view_tests/auth_tests.py b/django-openstack/django_openstack/tests/view_tests/auth_tests.py index 760cc9986..9dc5d34ad 100644 --- a/django-openstack/django_openstack/tests/view_tests/auth_tests.py +++ b/django-openstack/django_openstack/tests/view_tests/auth_tests.py @@ -1,6 +1,5 @@ from django import http from django.core.urlresolvers import reverse -from django.utils import unittest from django_openstack import api from django_openstack.tests.view_tests import base from openstackx.api import exceptions as api_exceptions diff --git a/django-openstack/django_openstack/tests/view_tests/base.py b/django-openstack/django_openstack/tests/view_tests/base.py index 9b3500e85..d3edc637e 100644 --- a/django-openstack/django_openstack/tests/view_tests/base.py +++ b/django-openstack/django_openstack/tests/view_tests/base.py @@ -21,14 +21,57 @@ """ Base classes for view based unit tests. """ - +from django import http +from django import shortcuts +from django import test as django_test +from django import template as django_template +from django.conf import settings from django_openstack import test -class Object(object): - """Inner Object for api resource wrappers""" - pass +def fake_render_to_response(template_name, context, context_instance=None, + mimetype='text/html'): + """Replacement for render_to_response so that views can be tested + without having to stub out templates that belong in the frontend + implementation. + + Should be able to be tested using the django unit test assertions like a + normal render_to_response return value can be. + """ + class Template(object): + def __init__(self, name): + self.name = name + + if context_instance is None: + context_instance = django_template.Context(context) + else: + context_instance.update(context) + + resp = http.HttpResponse() + template = Template(template_name) + + resp.write('

' + 'This is a fake httpresponse for testing purposes only' + '

') + + # Allows django.test.client to populate fields on the response object + django_test.signals.template_rendered.send(template, template=template, + context=context_instance) + + return resp class BaseViewTests(test.TestCase): - pass + def setUp(self): + super(BaseViewTests, self).setUp() + self._real_render_to_response = shortcuts.render_to_response + shortcuts.render_to_response = fake_render_to_response + + def tearDown(self): + super(BaseViewTests, self).tearDown() + shortcuts.render_to_response = self._real_render_to_response + + def assertRedirectsNoFollow(self, response, expected_url): + self.assertEqual(response._headers['location'], + ('Location', settings.TESTSERVER + expected_url)) + self.assertEqual(response.status_code, 302) diff --git a/django-openstack/django_openstack/tests/view_tests/dash/container_tests.py b/django-openstack/django_openstack/tests/view_tests/dash/container_tests.py index ad4d4f383..a1e2b2b50 100644 --- a/django-openstack/django_openstack/tests/view_tests/dash/container_tests.py +++ b/django-openstack/django_openstack/tests/view_tests/dash/container_tests.py @@ -10,9 +10,8 @@ from mox import IgnoreArg, IsA class ContainerViewTests(base.BaseViewTests): def setUp(self): super(ContainerViewTests, self).setUp() - container_inner = base.Object() - container_inner.name = 'containerName' - self.container = api.Container(container_inner) + self.container = self.mox.CreateMock(api.Container) + self.container.name = 'containerName' def test_index(self): self.mox.StubOutWithMock(api, 'swift_get_containers') diff --git a/django-openstack/django_openstack/tests/view_tests/dash/images_tests.py b/django-openstack/django_openstack/tests/view_tests/dash/images_tests.py index dffede82c..929f43aa9 100644 --- a/django-openstack/django_openstack/tests/view_tests/dash/images_tests.py +++ b/django-openstack/django_openstack/tests/view_tests/dash/images_tests.py @@ -1,6 +1,4 @@ # vim: tabstop=4 shiftwidth=4 softtabstop=4 -import logging - from django import http from django.contrib import messages from django.core.urlresolvers import reverse @@ -28,17 +26,17 @@ class ImageViewTests(base.BaseViewTests): self.images = (self.visibleImage, self.invisibleImage) - flavor_inner = base.Object() - flavor_inner.id = 1 - flavor_inner.name = 'm1.massive' - flavor_inner.vcpus = 1000 - flavor_inner.disk = 1024 - flavor_inner.ram = 10000 - self.flavors = (api.Flavor(flavor_inner),) + flavor = self.mox.CreateMock(api.Flavor) + flavor.id = 1 + flavor.name = 'm1.massive' + flavor.vcpus = 1000 + flavor.disk = 1024 + flavor.ram = 10000 + self.flavors = (flavor,) - keypair_inner = base.Object() - keypair_inner.key_name = 'keyName' - self.keypairs = (api.KeyPair(keypair_inner),) + keypair = self.mox.CreateMock(api.KeyPair) + keypair.key_name = 'keyName' + self.keypairs = (keypair,) def test_index(self): self.mox.StubOutWithMock(api, 'token_get_tenant') diff --git a/django-openstack/django_openstack/tests/view_tests/dash/instance_tests.py b/django-openstack/django_openstack/tests/view_tests/dash/instance_tests.py index ab5b48b31..8d6438c0e 100644 --- a/django-openstack/django_openstack/tests/view_tests/dash/instance_tests.py +++ b/django-openstack/django_openstack/tests/view_tests/dash/instance_tests.py @@ -14,10 +14,10 @@ from mox import IsA, IgnoreArg class InstanceViewTests(base.BaseViewTests): def setUp(self): super(InstanceViewTests, self).setUp() - server_inner = base.Object() - server_inner.id = 1 - server_inner.name = 'serverName' - self.servers = (api.Server(server_inner, None),) + server = self.mox.CreateMock(api.Server) + server.id = 1 + server.name = 'serverName' + self.servers = (server,) def test_index(self): self.mox.StubOutWithMock(api, 'server_list') diff --git a/django-openstack/django_openstack/tests/view_tests/dash/keypair_tests.py b/django-openstack/django_openstack/tests/view_tests/dash/keypair_tests.py index dec378527..5004c4f5d 100644 --- a/django-openstack/django_openstack/tests/view_tests/dash/keypair_tests.py +++ b/django-openstack/django_openstack/tests/view_tests/dash/keypair_tests.py @@ -10,9 +10,9 @@ import openstackx.api.exceptions as api_exceptions class KeyPairViewTests(base.BaseViewTests): def setUp(self): super(KeyPairViewTests, self).setUp() - keypair_inner = base.Object() - keypair_inner.key_name = 'keyName' - self.keypairs = (api.KeyPair(keypair_inner),) + keypair = self.mox.CreateMock(api.KeyPair) + keypair.key_name = 'keyName' + self.keypairs = (keypair,) def test_index(self): self.mox.StubOutWithMock(api, 'keypair_list')