Initial commit
This commit is contained in:
233
env/lib/python3.10/site-packages/wagtail/admin/tests/test_views.py
vendored
Normal file
233
env/lib/python3.10/site-packages/wagtail/admin/tests/test_views.py
vendored
Normal file
@@ -0,0 +1,233 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import TestCase, override_settings
|
||||
from django.urls import reverse
|
||||
|
||||
from wagtail.admin.forms.auth import PasswordResetForm
|
||||
from wagtail.admin.tests.test_forms import CustomLoginForm, CustomPasswordResetForm
|
||||
from wagtail.models import Page
|
||||
from wagtail.test.utils import WagtailTestUtils
|
||||
|
||||
|
||||
class TestLoginView(WagtailTestUtils, TestCase):
|
||||
fixtures = ["test.json"]
|
||||
|
||||
def setUp(self):
|
||||
self.user = self.create_test_user()
|
||||
self.homepage = Page.objects.get(url_path="/home/")
|
||||
|
||||
def test_success_redirect(self):
|
||||
response = self.client.post(
|
||||
reverse("wagtailadmin_login"),
|
||||
{
|
||||
"username": "test@email.com",
|
||||
"password": "password",
|
||||
},
|
||||
)
|
||||
self.assertRedirects(response, reverse("wagtailadmin_home"))
|
||||
|
||||
def test_success_redirect_honour_redirect_get_parameter(self):
|
||||
homepage_admin_url = reverse("wagtailadmin_pages:edit", args=[self.homepage.pk])
|
||||
login_url = reverse("wagtailadmin_login") + "?next={}".format(
|
||||
homepage_admin_url
|
||||
)
|
||||
response = self.client.post(
|
||||
login_url,
|
||||
{
|
||||
"username": "test@email.com",
|
||||
"password": "password",
|
||||
},
|
||||
)
|
||||
self.assertRedirects(response, homepage_admin_url)
|
||||
|
||||
def test_success_redirect_honour_redirect_post_parameter(self):
|
||||
homepage_admin_url = reverse("wagtailadmin_pages:edit", args=[self.homepage.pk])
|
||||
response = self.client.post(
|
||||
reverse("wagtailadmin_login"),
|
||||
{
|
||||
"username": "test@email.com",
|
||||
"password": "password",
|
||||
"next": homepage_admin_url,
|
||||
},
|
||||
)
|
||||
self.assertRedirects(response, homepage_admin_url)
|
||||
|
||||
def test_already_authenticated_redirect(self):
|
||||
self.login(username="test@email.com", password="password")
|
||||
|
||||
response = self.client.get(reverse("wagtailadmin_login"))
|
||||
self.assertRedirects(response, reverse("wagtailadmin_home"))
|
||||
|
||||
def test_already_authenticated_redirect_honour_redirect_get_parameter(self):
|
||||
self.login(username="test@email.com", password="password")
|
||||
|
||||
homepage_admin_url = reverse("wagtailadmin_pages:edit", args=[self.homepage.pk])
|
||||
login_url = reverse("wagtailadmin_login") + "?next={}".format(
|
||||
homepage_admin_url
|
||||
)
|
||||
response = self.client.get(login_url)
|
||||
self.assertRedirects(response, homepage_admin_url)
|
||||
|
||||
@override_settings(WAGTAILADMIN_LOGIN_URL="http://example.com/login/")
|
||||
def test_unauthenticated_redirect_to_custom_login_url(self):
|
||||
response = self.client.get(reverse("wagtailadmin_home"))
|
||||
self.assertRedirects(
|
||||
response,
|
||||
"http://example.com/login/?next=/admin/",
|
||||
fetch_redirect_response=False,
|
||||
)
|
||||
|
||||
@override_settings(LANGUAGE_CODE="de")
|
||||
def test_language_code(self):
|
||||
response = self.client.get(reverse("wagtailadmin_login"))
|
||||
self.assertContains(
|
||||
response,
|
||||
'<html lang="de" dir="ltr" class="w-theme-system w-density-default">',
|
||||
)
|
||||
|
||||
@override_settings(LANGUAGE_CODE="he")
|
||||
def test_bidi_language_changes_dir_attribute(self):
|
||||
response = self.client.get(reverse("wagtailadmin_login"))
|
||||
self.assertContains(
|
||||
response,
|
||||
'<html lang="he" dir="rtl" class="w-theme-system w-density-default">',
|
||||
)
|
||||
|
||||
@override_settings(
|
||||
WAGTAILADMIN_USER_LOGIN_FORM="wagtail.admin.tests.test_forms.CustomLoginForm"
|
||||
)
|
||||
def test_login_page_renders_extra_fields(self):
|
||||
response = self.client.get(reverse("wagtailadmin_login"))
|
||||
self.assertContains(
|
||||
response,
|
||||
"""
|
||||
<input type="text" name="captcha" required
|
||||
aria-describedby="id_captcha-helptext" id="id_captcha">
|
||||
""",
|
||||
html=True,
|
||||
)
|
||||
self.assertContains(
|
||||
response,
|
||||
"""
|
||||
<div class="w-field__help" id="id_captcha-helptext" data-field-help>
|
||||
<div class="help">should be in extra_fields()</div>
|
||||
</div>
|
||||
""",
|
||||
html=True,
|
||||
)
|
||||
|
||||
@override_settings(
|
||||
WAGTAILADMIN_USER_LOGIN_FORM="wagtail.admin.tests.test_forms.CustomLoginForm"
|
||||
)
|
||||
def test_login_page_renders_custom_form_non_field_errors(self):
|
||||
response = self.client.post(
|
||||
reverse("wagtailadmin_login"),
|
||||
{
|
||||
"username": "test@email.com",
|
||||
"password": "password",
|
||||
"captcha": "unsolved",
|
||||
},
|
||||
)
|
||||
self.assertContains(response, "Captcha is invalid")
|
||||
|
||||
@override_settings(
|
||||
WAGTAILADMIN_USER_LOGIN_FORM="wagtail.admin.tests.test_forms.CustomLoginForm"
|
||||
)
|
||||
def test_login_page_renders_custom_form_login_error(self):
|
||||
response = self.client.post(
|
||||
reverse("wagtailadmin_login"),
|
||||
{
|
||||
"username": "test@email.com",
|
||||
"password": "bad-password",
|
||||
"captcha": "solved",
|
||||
},
|
||||
)
|
||||
msg = CustomLoginForm.error_messages["invalid_login"] % {
|
||||
"username_field": get_user_model().USERNAME_FIELD
|
||||
}
|
||||
self.assertContains(response, msg, html=True)
|
||||
|
||||
def test_session_expire_on_browser_close(self):
|
||||
self.client.post(
|
||||
reverse("wagtailadmin_login"),
|
||||
{
|
||||
"username": "test@email.com",
|
||||
"password": "password",
|
||||
},
|
||||
)
|
||||
self.assertTrue(self.client.session.get_expire_at_browser_close())
|
||||
|
||||
@override_settings(SESSION_COOKIE_AGE=7)
|
||||
def test_session_expiry_remember(self):
|
||||
self.client.post(
|
||||
reverse("wagtailadmin_login"),
|
||||
{"username": "test@email.com", "password": "password", "remember": True},
|
||||
)
|
||||
self.assertFalse(self.client.session.get_expire_at_browser_close())
|
||||
self.assertEqual(self.client.session.get_expiry_age(), 7)
|
||||
|
||||
def test_password_whitespace_not_stripped(self):
|
||||
user_model = get_user_model()
|
||||
# Create a user
|
||||
user_data = {
|
||||
user_model.USERNAME_FIELD: "test2@email.com",
|
||||
"email": "test2@email.com",
|
||||
"password": " whitespaced_password ",
|
||||
}
|
||||
for field in user_model.REQUIRED_FIELDS:
|
||||
if field not in user_data:
|
||||
user_data[field] = field
|
||||
|
||||
user_model.objects.create_superuser(**user_data)
|
||||
|
||||
response = self.client.post(
|
||||
reverse("wagtailadmin_login"),
|
||||
{
|
||||
"username": "test2@email.com",
|
||||
"password": " whitespaced_password ",
|
||||
},
|
||||
)
|
||||
self.assertRedirects(response, reverse("wagtailadmin_home"))
|
||||
|
||||
|
||||
class TestPasswordResetView(TestCase):
|
||||
def test_password_reset_view_uses_correct_form(self):
|
||||
response = self.client.get(reverse("wagtailadmin_password_reset"))
|
||||
self.assertIsInstance(response.context.get("form"), PasswordResetForm)
|
||||
|
||||
with override_settings(
|
||||
WAGTAILADMIN_USER_PASSWORD_RESET_FORM="wagtail.admin.tests.test_forms.CustomPasswordResetForm"
|
||||
):
|
||||
response = self.client.get(reverse("wagtailadmin_password_reset"))
|
||||
self.assertIsInstance(response.context.get("form"), CustomPasswordResetForm)
|
||||
|
||||
@override_settings(
|
||||
WAGTAILADMIN_USER_PASSWORD_RESET_FORM="wagtail.admin.tests.test_forms.CustomPasswordResetForm"
|
||||
)
|
||||
def test_password_reset_page_renders_extra_fields(self):
|
||||
response = self.client.get(reverse("wagtailadmin_password_reset"))
|
||||
self.assertContains(
|
||||
response,
|
||||
"""
|
||||
<input type="text" name="captcha" required
|
||||
aria-describedby="id_captcha-helptext" id="id_captcha">
|
||||
""",
|
||||
html=True,
|
||||
)
|
||||
self.assertContains(
|
||||
response,
|
||||
"""
|
||||
<div class="w-field__help" id="id_captcha-helptext" data-field-help>
|
||||
<div class="help">should be in extra_fields()</div>
|
||||
</div>
|
||||
""",
|
||||
html=True,
|
||||
)
|
||||
|
||||
|
||||
class TestJsi18nView(TestCase):
|
||||
def test_jsi18n_does_not_require_login(self):
|
||||
response = self.client.get(reverse("wagtailadmin_javascript_catalog"))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# get content type header without the "charset" suffix
|
||||
content_type = response["content-type"].split(";")[0]
|
||||
self.assertEqual(content_type, "text/javascript")
|
||||
Reference in New Issue
Block a user