From ca121064e945a399543771f248a70a80585ec214 Mon Sep 17 00:00:00 2001 From: Vitor Freitas Date: Wed, 16 Jan 2019 10:55:57 +0200 Subject: Remove old home page. Move dashboard view to empty path. Add tests for core views. --- colossus/apps/core/tests/test_views.py | 40 ++++++++++++++++++++++++++++++++++ colossus/apps/core/views.py | 5 ----- colossus/apps/subscribers/urls.py | 1 - colossus/apps/subscribers/views.py | 6 ----- colossus/templates/base.html | 2 +- colossus/urls.py | 2 +- 6 files changed, 42 insertions(+), 14 deletions(-) create mode 100644 colossus/apps/core/tests/test_views.py diff --git a/colossus/apps/core/tests/test_views.py b/colossus/apps/core/tests/test_views.py new file mode 100644 index 0000000..b7b1e76 --- /dev/null +++ b/colossus/apps/core/tests/test_views.py @@ -0,0 +1,40 @@ +from django.urls import resolve, reverse + +from colossus.apps.core import views +from colossus.test.testcases import AuthenticatedTestCase, TestCase + + +class CoreLoginRequiredTests(TestCase): + """ + Test if all the urls from core's app are protected with login_required decorator + Perform a GET request to all urls. The expected outcome is a redirection + to the login page. + """ + def test_redirection(self): + patterns = [ + 'dashboard', + 'settings', + ] + for url_name in patterns: + with self.subTest(url_name=url_name): + url = reverse(url_name) + response = self.client.get(url) + self.assertRedirectsLoginRequired(response, url) + + +class DashboardViewTests(AuthenticatedTestCase): + def setUp(self): + super().setUp() + self.url = reverse('dashboard') + self.response = self.client.get(self.url) + + def test_status_code_200(self): + self.assertEqual(self.response.status_code, 200) + + def test_view_function(self): + view = resolve('/') + self.assertEqual(view.func, views.dashboard) + + def test_response_context(self): + context = self.response.context + self.assertEqual('dashboard', context['menu']) diff --git a/colossus/apps/core/views.py b/colossus/apps/core/views.py index b70ec9c..1c9c488 100644 --- a/colossus/apps/core/views.py +++ b/colossus/apps/core/views.py @@ -44,11 +44,6 @@ def dashboard(request): }) -@login_required -def settings(request): - return render(request, 'core/settings.html', {'menu': 'settings'}) - - def setup(request): if User.objects.exists() or MailingList.objects.exists(): return redirect('dashboard') diff --git a/colossus/apps/subscribers/urls.py b/colossus/apps/subscribers/urls.py index f708ebb..1aacce8 100644 --- a/colossus/apps/subscribers/urls.py +++ b/colossus/apps/subscribers/urls.py @@ -6,7 +6,6 @@ app_name = 'subscribers' urlpatterns = [ - path('', views.IndexView.as_view(), name='index'), path('manage/', views.manage, name='manage'), path('goodbye//', views.goodbye, name='goodbye'), path('subscribe//', views.subscribe, name='subscribe'), diff --git a/colossus/apps/subscribers/views.py b/colossus/apps/subscribers/views.py index 482a546..b85c994 100644 --- a/colossus/apps/subscribers/views.py +++ b/colossus/apps/subscribers/views.py @@ -13,7 +13,6 @@ from django.views.decorators.csrf import csrf_exempt from django.views.decorators.http import ( require_GET, require_http_methods, require_POST, ) -from django.views.generic import View import requests from ratelimit.decorators import ratelimit @@ -30,11 +29,6 @@ from .models import Subscriber logger = logging.getLogger(__name__) -class IndexView(View): - def get(self, request): - return HttpResponse('Hi there! :)', content_type='text/plain') - - @csrf_exempt @require_POST def manage(request): diff --git a/colossus/templates/base.html b/colossus/templates/base.html index 4b550a3..761755a 100644 --- a/colossus/templates/base.html +++ b/colossus/templates/base.html @@ -18,7 +18,7 @@ {% block body %} -