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.
This commit is contained in:
parent
c1fc700285
commit
b5ed7916d3
@ -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('<html><body><p>'
|
||||
'This is a fake httpresponse for testing purposes only'
|
||||
'</p></body></html>')
|
||||
|
||||
# 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)
|
||||
|
@ -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
|
||||
|
@ -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('<html><body><p>'
|
||||
'This is a fake httpresponse for testing purposes only'
|
||||
'</p></body></html>')
|
||||
|
||||
# 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)
|
||||
|
@ -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')
|
||||
|
@ -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')
|
||||
|
@ -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')
|
||||
|
@ -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')
|
||||
|
Loading…
x
Reference in New Issue
Block a user