diff options
| author | Hisham Mahmood <hishammahmood41@gmail.com> | 2024-05-05 11:21:28 +0500 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-05-22 08:51:17 +0200 |
| commit | c7fc9f20b49b5889a9a8f47de45165ac443c1a21 (patch) | |
| tree | 113e55d5b047f479375638c1f17d9c127aedf618 /tests/auth_tests/test_views.py | |
| parent | 7857507c7fc43350701700d4215a37baea7655f0 (diff) | |
Fixed #31405 -- Added LoginRequiredMiddleware.
Co-authored-by: Adam Johnson <me@adamj.eu>
Co-authored-by: Mehmet İnce <mehmet@mehmetince.net>
Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
Diffstat (limited to 'tests/auth_tests/test_views.py')
| -rw-r--r-- | tests/auth_tests/test_views.py | 80 |
1 files changed, 79 insertions, 1 deletions
diff --git a/tests/auth_tests/test_views.py b/tests/auth_tests/test_views.py index 53e33785b0..97d0448ab1 100644 --- a/tests/auth_tests/test_views.py +++ b/tests/auth_tests/test_views.py @@ -32,7 +32,7 @@ from django.core.exceptions import ImproperlyConfigured from django.db import connection from django.http import HttpRequest, HttpResponse from django.middleware.csrf import CsrfViewMiddleware, get_token -from django.test import Client, TestCase, override_settings +from django.test import Client, TestCase, modify_settings, override_settings from django.test.client import RedirectCycleError from django.urls import NoReverseMatch, reverse, reverse_lazy from django.utils.http import urlsafe_base64_encode @@ -472,6 +472,29 @@ class PasswordResetTest(AuthViewsTestCase): with self.assertRaisesMessage(ImproperlyConfigured, msg): self.client.get("/reset/missing_parameters/") + @modify_settings( + MIDDLEWARE={"append": "django.contrib.auth.middleware.LoginRequiredMiddleware"} + ) + def test_access_under_login_required_middleware(self): + reset_urls = [ + reverse("password_reset"), + reverse("password_reset_done"), + reverse("password_reset_confirm", kwargs={"uidb64": "abc", "token": "def"}), + reverse("password_reset_complete"), + ] + + for url in reset_urls: + with self.subTest(url=url): + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + + response = self.client.post( + "/password_reset/", {"email": "staffmember@example.com"} + ) + self.assertRedirects( + response, "/password_reset/done/", fetch_redirect_response=False + ) + @override_settings(AUTH_USER_MODEL="auth_tests.CustomUser") class CustomUserPasswordResetTest(AuthViewsTestCase): @@ -661,6 +684,38 @@ class ChangePasswordTest(AuthViewsTestCase): response, "/password_reset/", fetch_redirect_response=False ) + @modify_settings( + MIDDLEWARE={"append": "django.contrib.auth.middleware.LoginRequiredMiddleware"} + ) + def test_access_under_login_required_middleware(self): + response = self.client.post( + "/password_change/", + { + "old_password": "password", + "new_password1": "password1", + "new_password2": "password1", + }, + ) + self.assertRedirects( + response, + settings.LOGIN_URL + "?next=/password_change/", + fetch_redirect_response=False, + ) + + self.login() + + response = self.client.post( + "/password_change/", + { + "old_password": "password", + "new_password1": "password1", + "new_password2": "password1", + }, + ) + self.assertRedirects( + response, "/password_change/done/", fetch_redirect_response=False + ) + class SessionAuthenticationTests(AuthViewsTestCase): def test_user_password_change_updates_session(self): @@ -904,6 +959,13 @@ class LoginTest(AuthViewsTestCase): response = self.login(url="/login/get_default_redirect_url/?next=/test/") self.assertRedirects(response, "/test/", fetch_redirect_response=False) + @modify_settings( + MIDDLEWARE={"append": "django.contrib.auth.middleware.LoginRequiredMiddleware"} + ) + def test_access_under_login_required_middleware(self): + response = self.client.get(reverse("login")) + self.assertEqual(response.status_code, 200) + class LoginURLSettings(AuthViewsTestCase): """Tests for settings.LOGIN_URL.""" @@ -1355,6 +1417,22 @@ class LogoutTest(AuthViewsTestCase): self.assertContains(response, "Logged out") self.confirm_logged_out() + @modify_settings( + MIDDLEWARE={"append": "django.contrib.auth.middleware.LoginRequiredMiddleware"} + ) + def test_access_under_login_required_middleware(self): + response = self.client.post("/logout/") + self.assertRedirects( + response, + settings.LOGIN_URL + "?next=/logout/", + fetch_redirect_response=False, + ) + + self.login() + + response = self.client.post("/logout/") + self.assertEqual(response.status_code, 200) + def get_perm(Model, perm): ct = ContentType.objects.get_for_model(Model) |
