Coverage for pages/tests/test_views.py: 97.33%
75 statements
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-08 13:12 -0700
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-08 13:12 -0700
1from django.core.mail import BadHeaderError
2from django.test import SimpleTestCase
3from django.urls import resolve, reverse
5from ..views import (
6 AboutPageView,
7 ContactView,
8 HomePageView,
9 SuccessView,
10)
13class HomePageTests(SimpleTestCase):
14 def setUp(self):
15 url = reverse("home")
16 self.response = self.client.get(url)
18 def test_homepage_status_code(self):
19 self.assertEqual(self.response.status_code, 200) 1h
21 def test_homepage_template(self):
22 self.assertTemplateUsed(self.response, "pages/home.html") 1i
24 def test_homepage_contains_correct_html(self):
25 self.assertContains(self.response, "Django Polls app") 1j
27 def test_homepage_does_not_contain_incorrect_html(self):
28 self.assertNotContains(self.response, "Not the Homepage") 1k
30 def test_homepage_url_resolves_homepageview(self):
31 view = resolve("/") 1c
32 self.assertEqual( 1c
33 view.func.__name__,
34 HomePageView.as_view().__name__,
35 )
38class AboutPageTests(SimpleTestCase):
39 def setUp(self):
40 url = reverse("about")
41 self.response = self.client.get(url)
43 def test_about_page_status_code(self):
44 self.assertEqual(self.response.status_code, 200) 1l
46 def test_about_page_template(self):
47 self.assertTemplateUsed(self.response, "pages/about.html") 1m
49 def test_about_page_contains_correct_html(self):
50 self.assertContains(self.response, "About Page") 1n
52 def test_about_page_does_not_contain_incorrect_html(self):
53 self.assertNotContains(self.response, "Not the About page") 1o
55 def test_about_page_url_resolves_about_pageview(self):
56 view = resolve("/about/") 1d
57 self.assertEqual( 1d
58 view.func.__name__,
59 AboutPageView.as_view().__name__,
60 )
63class ContactViewTests(SimpleTestCase):
64 def setUp(self):
65 url = reverse("contact")
66 self.response = self.client.get(url)
68 def test_contact_page_status_code(self):
69 self.assertEqual(self.response.status_code, 200) 1p
71 def test_contact_page_url_resolves_contactpageview(self):
72 view = resolve("/contact/") 1e
73 self.assertEqual( 1e
74 view.func.__name__,
75 ContactView.__name__,
76 )
78 def test_contact_page_template(self):
79 self.assertTemplateUsed(self.response, "pages/contact.html") 1q
81 def test_contact_page_contains_correct_html(self):
82 self.assertContains(self.response, "Contact Us") 1r
84 def test_contact_page_does_not_contain_incorrect_html(self):
85 self.assertNotContains(self.response, "Home Page") 1s
87 def test_post_success(self):
88 self.client.post( 1f
89 "/contact/",
90 data={
91 "from_email": "john@example.com",
92 "subject": "Test Email",
93 "messages": "This is a test",
94 },
95 )
96 self.assertEqual(self.response.status_code, 200) 1f
98 def test_header_injection(self):
99 error_occured = True 1b
100 try: 1b
101 self.client.post( 1b
102 "/contact/",
103 data={
104 "from_email": "joe@example.com",
105 "subject": "Subject\nInjectionTest",
106 "message": "This is a test of a BadHeaderError",
107 },
108 )
109 error_occured = False 1b
110 except BadHeaderError:
111 error_occured = True
112 self.assertFalse(error_occured) 1b
115class SuccessViewTests(SimpleTestCase):
116 def setUp(self):
117 url = reverse("success")
118 self.response = self.client.get(url)
120 def test_success_page_status_code(self):
121 self.assertEqual(self.response.status_code, 200) 1t
123 def test_success_page_template(self):
124 self.assertTemplateUsed(self.response, "pages/success.html") 1u
126 def test_success_page_contains_correct_html(self):
127 self.assertContains( 1v
128 self.response,
129 "Thank you for your message.",
130 )
132 def test_success_page_does_not_contain_incorrect_html(self):
133 self.assertNotContains(self.response, "Please Go Away") 1w
135 def test_success_page_url_resolves_success_page_view(self):
136 view = resolve("/success/") 1g
137 self.assertEqual( 1g
138 view.func.__name__,
139 SuccessView.__name__,
140 )