2025-03-22 15:29:19 -10:00

45 lines
2.1 KiB
Python

from django.test import override_settings, TestCase
from django.urls import reverse
class TestLoginRedirect(TestCase):
@override_settings(LOGIN_URL="/custom/login/")
def test_custom_login_view_with_url(self):
"""Test login redirect when LOGIN_URL is set to custom url"""
response = self.client.get(reverse("helpdesk:login"))
# We expect that that helpdesk:home url is passed as next parameter in
# the redirect url, so that the custom login can redirect the browser
# back to helpdesk after the login.
home_url = reverse("helpdesk:home")
expected = "/custom/login/?next={}".format(home_url)
self.assertRedirects(response, expected, fetch_redirect_response=False)
@override_settings(LOGIN_URL="/custom/login/")
def test_custom_login_next_param(self):
"""Test that the next url parameter is correctly relayed to custom login"""
next_param = "/redirect/back"
url = reverse("helpdesk:login") + "?next=" + next_param
response = self.client.get(url)
expected = "/custom/login/?next={}".format(next_param)
self.assertRedirects(response, expected, fetch_redirect_response=False)
@override_settings(LOGIN_URL="helpdesk:login", SITE_ID=1)
def test_default_login_view(self):
"""Test that default login is used when LOGIN_URL is helpdesk:login"""
response = self.client.get(reverse("helpdesk:login"))
self.assertTemplateUsed(response, "helpdesk/registration/login.html")
@override_settings(LOGIN_URL=None, SITE_ID=1)
def test_login_url_none(self):
"""Test that default login is used when LOGIN_URL is None"""
response = self.client.get(reverse("helpdesk:login"))
self.assertTemplateUsed(response, "helpdesk/registration/login.html")
@override_settings(LOGIN_URL="admin:login", SITE_ID=1)
def test_custom_login_view_with_name(self):
"""Test that LOGIN_URL can be a view name"""
response = self.client.get(reverse("helpdesk:login"))
home_url = reverse("helpdesk:home")
expected = reverse("admin:login") + "?next=" + home_url
self.assertRedirects(response, expected)