1from django.test import TestCase, override_settings 2from django.urls import reverse 3 4from wagtail.core.models import Page 5from wagtail.tests.utils import WagtailTestUtils 6 7 8class TestLoginView(TestCase, WagtailTestUtils): 9 fixtures = ['test.json'] 10 11 def setUp(self): 12 self.user = self.create_test_user() 13 self.homepage = Page.objects.get(url_path='/home/') 14 15 def test_success_redirect(self): 16 response = self.client.post(reverse('wagtailadmin_login'), { 17 'username': 'test@email.com', 18 'password': 'password', 19 }) 20 self.assertRedirects(response, reverse('wagtailadmin_home')) 21 22 def test_success_redirect_honour_redirect_get_parameter(self): 23 homepage_admin_url = reverse('wagtailadmin_pages:edit', args=[self.homepage.pk]) 24 login_url = reverse('wagtailadmin_login') + '?next={}'.format(homepage_admin_url) 25 response = self.client.post(login_url, { 26 'username': 'test@email.com', 27 'password': 'password', 28 }) 29 self.assertRedirects(response, homepage_admin_url) 30 31 def test_success_redirect_honour_redirect_post_parameter(self): 32 homepage_admin_url = reverse('wagtailadmin_pages:edit', args=[self.homepage.pk]) 33 response = self.client.post(reverse('wagtailadmin_login'), { 34 'username': 'test@email.com', 35 'password': 'password', 36 'next': homepage_admin_url, 37 }) 38 self.assertRedirects(response, homepage_admin_url) 39 40 def test_already_authenticated_redirect(self): 41 self.login(username='test@email.com', password='password') 42 43 response = self.client.get(reverse('wagtailadmin_login')) 44 self.assertRedirects(response, reverse('wagtailadmin_home')) 45 46 def test_already_authenticated_redirect_honour_redirect_get_parameter(self): 47 self.login(username='test@email.com', password='password') 48 49 homepage_admin_url = reverse('wagtailadmin_pages:edit', args=[self.homepage.pk]) 50 login_url = reverse('wagtailadmin_login') + '?next={}'.format(homepage_admin_url) 51 response = self.client.get(login_url) 52 self.assertRedirects(response, homepage_admin_url) 53 54 @override_settings(LANGUAGE_CODE='de') 55 def test_language_code(self): 56 response = self.client.get(reverse('wagtailadmin_login')) 57 self.assertContains(response, '<html class="no-js" lang="de" dir="ltr">') 58 59 @override_settings(LANGUAGE_CODE='he') 60 def test_bidi_language_changes_dir_attribute(self): 61 response = self.client.get(reverse('wagtailadmin_login')) 62 self.assertContains(response, '<html class="no-js" lang="he" dir="rtl">') 63