From e2508e7334ce8f59697c04b9a86783e6c0517ea2 Mon Sep 17 00:00:00 2001 From: "Leandro I. Costantino" Date: Mon, 2 Dec 2013 21:47:00 -0500 Subject: [PATCH] Add more Horizon unit tests. Increse horizon base (+2%) and middleware (+10%) coverage by adding 6 new tests. Change-Id: Ibd0f7f43885ee447369a9beaccab7befbbc45ca4 --- horizon/test/tests/base.py | 55 ++++++++++++++++++++++++++++++++ horizon/test/tests/middleware.py | 20 ++++++++++++ 2 files changed, 75 insertions(+) diff --git a/horizon/test/tests/base.py b/horizon/test/tests/base.py index 0a8e0b8847..bff4a5c6c5 100644 --- a/horizon/test/tests/base.py +++ b/horizon/test/tests/base.py @@ -21,6 +21,7 @@ from django.conf import settings # noqa from django.contrib.auth.models import User # noqa +from django.core.exceptions import ImproperlyConfigured # noqa from django.core import urlresolvers from django.utils.importlib import import_module # noqa @@ -192,6 +193,18 @@ class HorizonTests(BaseHorizonTests): self.assertEqual(tigers._registered_with, cats) self.assertEqual(tigers.get_absolute_url(), "/cats/tigers/") + def test_panel_without_slug_fails(self): + class InvalidPanel(horizon.Panel): + name = 'Invalid' + + self.assertRaises(ImproperlyConfigured, InvalidPanel) + + def test_registry_without_registerable_class_attr_fails(self): + class InvalidRegistry(base.Registry): + pass + + self.assertRaises(ImproperlyConfigured, InvalidRegistry) + def test_index_url_name(self): cats = horizon.get_dashboard("cats") tigers = cats.get_panel("tigers") @@ -296,6 +309,48 @@ class HorizonTests(BaseHorizonTests): settings.SECURE_PROXY_SSL_HEADER = None +class GetUserHomeTests(BaseHorizonTests): + """Test get_user_home parameters.""" + + def setUp(self): + self.orig_user_home = settings.HORIZON_CONFIG['user_home'] + super(BaseHorizonTests, self).setUp() + self.original_username = "testname" + self.test_user = User() + self.test_user.username = self.original_username + + def tearDown(self): + settings.HORIZON_CONFIG['user_home'] = self.orig_user_home + conf.HORIZON_CONFIG._setup() + + def test_using_callable(self): + def fancy_user_fnc(user): + return user.username.upper() + + settings.HORIZON_CONFIG['user_home'] = fancy_user_fnc + conf.HORIZON_CONFIG._setup() + + self.assertEqual(self.test_user.username.upper(), + base.Horizon.get_user_home(self.test_user)) + + def test_using_module_function(self): + module_func = 'django.utils.html.strip_tags' + settings.HORIZON_CONFIG['user_home'] = module_func + conf.HORIZON_CONFIG._setup() + + self.test_user.username = 'testname' + self.assertEqual(self.original_username, + base.Horizon.get_user_home(self.test_user)) + + def test_using_url(self): + fixed_url = "/url" + settings.HORIZON_CONFIG['user_home'] = fixed_url + conf.HORIZON_CONFIG._setup() + + self.assertEqual(fixed_url, + base.Horizon.get_user_home(self.test_user)) + + class CustomPanelTests(BaseHorizonTests): """Test customization of dashboards and panels diff --git a/horizon/test/tests/middleware.py b/horizon/test/tests/middleware.py index d480fa10dd..3c539b12ef 100644 --- a/horizon/test/tests/middleware.py +++ b/horizon/test/tests/middleware.py @@ -19,6 +19,9 @@ import datetime from django.conf import settings # noqa +from django.http import HttpResponse # noqa +from django.http import HttpResponseRedirect # noqa + from horizon import exceptions from horizon import middleware from horizon.test import helpers as test @@ -49,3 +52,20 @@ class MiddlewareTests(test.TestCase): resp = mw.process_request(request) self.assertEqual(resp.status_code, 302) self.assertEqual(resp.get('Location'), response_url) + + def test_process_response_redirect_on_ajax_request(self): + url = settings.LOGIN_URL + mw = middleware.HorizonMiddleware() + + request = self.factory.post(url, + HTTP_X_REQUESTED_WITH='XMLHttpRequest') + request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' + request.horizon = {'async_messages': + [('error', 'error_msg', 'extra_tag')]} + + response = HttpResponseRedirect(url) + response.client = self.client + + resp = mw.process_response(request, response) + self.assertEqual(resp.status_code, 200) + self.assertEqual(resp['X-Horizon-Location'], url)