from unittest import mock from django.test import TestCase from django.urls import reverse from wagtail.coreutils import get_dummy_request from wagtail.models import Page, Site from wagtail.test.testapp.models import SimplePage from wagtail.test.utils import WagtailTestUtils from wagtail.views import serve class TestLoginView(WagtailTestUtils, TestCase): fixtures = ["test.json"] def setUp(self): self.user = self.create_test_user() self.events_index = Page.objects.get(url_path="/home/events/") def test_get(self): response = self.client.get(reverse("wagtailcore_login")) self.assertEqual(response.status_code, 200) self.assertContains(response, "
Your username and password didn't match. Please try again.
", ) def test_post_incorrect_password(self): response = self.client.post( reverse("wagtailcore_login"), { "username": "test@email.com", "password": "wrongpassword", "next": self.events_index.url, }, ) self.assertEqual(response.status_code, 200) self.assertContains(response, "Your username and password didn't match. Please try again.
", ) def test_post_correct_password(self): response = self.client.post( reverse("wagtailcore_login"), { "username": "test@email.com", "password": "password", "next": self.events_index.url, }, ) self.assertRedirects(response, self.events_index.url) @mock.patch("wagtail.hooks.get_hooks", mock.Mock(return_value=[])) class TestServeView(TestCase): fixtures = ["test.json"] def test_serve_query_count(self): request = get_dummy_request() Site.find_for_request(request) page, args, kwargs = Page.route_for_request(request, request.path) with mock.patch.object(page, "serve", wraps=page.serve) as m: with self.assertNumQueries(0): serve(request, "/") m.assert_called_once_with(request, *args, **kwargs) def test_process_view_by_page_query_count(self): expected_query_count = 3 site = Site.objects.get() page = site.root_page.add_child( instance=SimplePage(title="Simple page", slug="simple", content="Simple") ) with mock.patch.object( Page, "route_for_request", wraps=Page.route_for_request ) as m: with self.modify_settings( MIDDLEWARE={ "prepend": "wagtail.test.middleware.SimplePageViewInterceptorMiddleware" } ): with self.assertNumQueries(expected_query_count): response_a = self.client.get("/simple/") self.assertEqual( response_a.content, b'\n\n\n\n\n\n \n