From dd67ee91da68e563e9ffeac6c4345bd4163ca889 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 14 Apr 2023 19:33:44 +0200 Subject: [PATCH] Require login for index view --- gnuviechadmin/dashboard/tests/test_views.py | 10 ++++++++++ gnuviechadmin/dashboard/views.py | 3 ++- .../gnuviechadmin/tests/test_contextprocessors.py | 13 +++++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gnuviechadmin/dashboard/tests/test_views.py b/gnuviechadmin/dashboard/tests/test_views.py index 2ff835b..dc1dde5 100644 --- a/gnuviechadmin/dashboard/tests/test_views.py +++ b/gnuviechadmin/dashboard/tests/test_views.py @@ -14,7 +14,17 @@ TEST_PASSWORD = "secret" class IndexViewTest(TestCase): + def test_index_view_anonymous(self): + response = self.client.get(reverse("dashboard")) + self.assertRedirects(response, "/accounts/login/?next=/") + def test_index_view(self): + user = User.objects.create(username=TEST_USER) + user.set_password(TEST_PASSWORD) + user.save() + + self.client.login(username=TEST_USER, password=TEST_PASSWORD) + response = self.client.get(reverse("dashboard")) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, "dashboard/index.html") diff --git a/gnuviechadmin/dashboard/views.py b/gnuviechadmin/dashboard/views.py index af9d7e0..7f30316 100644 --- a/gnuviechadmin/dashboard/views.py +++ b/gnuviechadmin/dashboard/views.py @@ -3,13 +3,14 @@ This module defines the views for the gnuviechadmin customer dashboard. """ from django.contrib.auth import get_user_model +from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import DetailView, TemplateView from gvacommon.viewmixins import StaffOrSelfLoginRequiredMixin from hostingpackages.models import CustomerHostingPackage -class IndexView(TemplateView): +class IndexView(LoginRequiredMixin, TemplateView): """ This is the dashboard view. diff --git a/gnuviechadmin/gnuviechadmin/tests/test_contextprocessors.py b/gnuviechadmin/gnuviechadmin/tests/test_contextprocessors.py index 664e8d2..94578cd 100644 --- a/gnuviechadmin/gnuviechadmin/tests/test_contextprocessors.py +++ b/gnuviechadmin/gnuviechadmin/tests/test_contextprocessors.py @@ -18,13 +18,16 @@ from gnuviechadmin.context_processors import navigation User = get_user_model() +TEST_USER = "test" +TEST_PASSWORD = "secret" + 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") + response = self.client.get("/accounts/login/", HTTP_X_REQUESTED_WITH="XMLHttpRequest") for item in self.EXPECTED_ITEMS: self.assertNotIn(item, response.context) @@ -34,6 +37,12 @@ class NavigationContextProcessorTest(TestCase): self.assertEqual(context["phppgadmin_url"], settings.GVA_LINK_PHPPGADMIN) def test_index_page_context(self): + user = User.objects.create(username=TEST_USER) + user.set_password(TEST_PASSWORD) + user.save() + + self.client.login(username=TEST_USER, password=TEST_PASSWORD) + response = self.client.get("/") for item in self.EXPECTED_ITEMS: self.assertIn(item, response.context) @@ -106,6 +115,6 @@ class NavigationContextProcessorTest(TestCase): class VersionInfoContextProcessorTest(TestCase): def test_version_info_in_context(self): - response = self.client.get("/") + response = self.client.get("/accounts/login/") self.assertIn("gnuviechadmin_version", response.context) self.assertEqual(response.context["gnuviechadmin_version"], gvaversion)