# -*- python -*- # -*- coding: utf-8 -*- """ This module contains tests for :py:mod:`gnuviechadmin.context_processors`. """ from mock import MagicMock from django.conf import settings from django.core.urlresolvers import reverse from django.http import HttpRequest from django.test import TestCase from django.contrib.auth import get_user_model from gnuviechadmin import __version__ as gvaversion from gnuviechadmin.context_processors import navigation User = get_user_model() class NavigationContextProcessorTest(TestCase): EXPECTED_ITEMS = ( 'webmail_url', 'phpmyadmin_url', 'phppgadmin_url', 'active_item' ) def test_ajax_request(self): response = self.client.get( '/', HTTP_X_REQUESTED_WITH='XMLHttpRequest') for item in self.EXPECTED_ITEMS: self.assertNotIn(item, response.context) def _check_static_urls(self, context): self.assertEqual( context['webmail_url'], settings.GVA_LINK_WEBMAIL) self.assertEqual( context['phpmyadmin_url'], settings.GVA_LINK_PHPMYADMIN) self.assertEqual( context['phppgadmin_url'], settings.GVA_LINK_PHPPGADMIN) def test_index_page_context(self): response = self.client.get('/') for item in self.EXPECTED_ITEMS: self.assertIn(item, response.context) self._check_static_urls(response.context) self.assertEqual(response.context['active_item'], 'dashboard') def test_contact_page_context(self): response = self.client.get(reverse('contact_form')) for item in self.EXPECTED_ITEMS: self.assertIn(item, response.context) self._check_static_urls(response.context) self.assertEqual(response.context['active_item'], 'contact') def test_hostingpackage_page_context(self): User.objects.create_user('test', password='test') self.client.login(username='test', password='test') response = self.client.get( reverse('hosting_packages', kwargs={'user': 'test'})) for item in self.EXPECTED_ITEMS: self.assertIn(item, response.context) self._check_static_urls(response.context) self.assertEqual(response.context['active_item'], 'hostingpackage') def _test_page_context_by_viewmodule(self, viewmodule, expecteditem): request = HttpRequest() request.resolver_match = MagicMock() request.resolver_match.func.__module__ = viewmodule context = navigation(request) for item in self.EXPECTED_ITEMS: self.assertIn(item, context) self._check_static_urls(context) self.assertEqual(context['active_item'], expecteditem) def test_osusers_page_context(self): self._test_page_context_by_viewmodule( 'osusers.views', 'hostingpackage') def test_userdbs_page_context(self): self._test_page_context_by_viewmodule( 'userdbs.views', 'hostingpackage') def test_managemails_page_context(self): self._test_page_context_by_viewmodule( 'managemails.views', 'hostingpackage') def test_websites_page_context(self): self._test_page_context_by_viewmodule( 'websites.views', 'hostingpackage') def test_domains_page_context(self): self._test_page_context_by_viewmodule( 'domains.views', 'hostingpackage') def test_allauth_account_page_context(self): self._test_page_context_by_viewmodule( 'allauth.account.views', 'account') def test_allauth_socialaccount_page_context(self): self._test_page_context_by_viewmodule( 'allauth.socialaccount.views', 'account') def test_imprint_page_context(self): response = self.client.get(reverse('imprint')) for item in self.EXPECTED_ITEMS: self.assertIn(item, response.context) self._check_static_urls(response.context) self.assertEqual(response.context['active_item'], 'imprint') def test_no_resolver_match(self): request = HttpRequest() context = navigation(request) self._check_static_urls(context) self.assertEqual(context['active_item'], 'dashboard') def test_admin_module(self): self._test_page_context_by_viewmodule( 'django.contrib.admin.foo', 'dashboard') class VersionInfoContextProcessorTest(TestCase): def test_version_info_in_context(self): response = self.client.get('/') self.assertIn('gnuviechadmin_version', response.context) self.assertEqual(response.context['gnuviechadmin_version'], gvaversion)