Coverage for accounts/tests/test_models.py: 96.33%
109 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 15:39 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 15:39 -0700
1from django.contrib.auth import get_user_model
2from django.test import TestCase
3from django.urls import reverse
6class CustomUserTests(TestCase):
7 def setUp(self):
8 User = get_user_model()
9 self.user = User.objects.create_user(
10 username="kevin",
11 email="kevin@example.com",
12 password="T3stP@5s123",
13 )
15 self.super_user = User.objects.create_superuser(
16 username="superadmin",
17 email="superadmin@example.com",
18 password="T3stP@5s123",
19 )
21 def test___str__(self):
22 assert self.user.__str__() == self.user.username 1l
23 assert str(self.user) == self.user.username 1l
25 def test_user_get_absolute_url(self):
26 assert self.user.get_absolute_url() == f"/accounts/{self.user.username}/" 1m
28 def test_create_user(self):
29 self.assertEqual(self.user.username, "kevin") 1c
30 self.assertEqual(self.user.email, "kevin@example.com") 1c
31 self.assertTrue(self.user.is_active) 1c
32 self.assertFalse(self.user.is_staff) 1c
33 self.assertFalse(self.user.is_superuser) 1c
35 def test_user_asserts(self):
36 User = get_user_model() 1b
37 try: 1b
38 self.assertIsNotNone(self.user.username) 1b
39 except AttributeError:
40 pass
41 with self.assertRaises(TypeError): 1b
42 User.objects.create_user() 1b
43 with self.assertRaises(TypeError): 1b
44 User.objects.create_user(email="") 1b
45 with self.assertRaises(ValueError): 1b
46 User.objects.create_user(username="", email="", password="foo") 1b
48 def test_create_superuser(self):
49 self.assertEqual(self.super_user.username, "superadmin") 1d
50 self.assertEqual(self.super_user.email, "superadmin@example.com") 1d
51 self.assertTrue(self.super_user.is_active) 1d
52 self.assertTrue(self.super_user.is_staff) 1d
53 self.assertTrue(self.super_user.is_superuser) 1d
55 def test_superuser_asserts(self):
56 User = get_user_model() 1e
57 try: 1e
58 self.assertIsNotNone(self.super_user.username) 1e
59 except AttributeError:
60 pass
61 with self.assertRaises(ValueError): 1e
62 User.objects.create_superuser( 1e
63 username="",
64 email="super@user.com",
65 password="foo",
66 is_superuser=False,
67 )
70class SignupPageTests(TestCase):
71 username = "newuser"
72 email = "newuser@example.com"
74 def setUp(self):
75 url = reverse("account_signup")
76 self.response = self.client.get(url)
78 def test_signup_template(self):
79 self.assertEqual(self.response.status_code, 200) 1f
80 self.assertTemplateUsed(self.response, "account/signup.html") 1f
81 self.assertContains(self.response, "Sign Up") 1f
82 self.assertNotContains(self.response, "I do not belong here") 1f
84 def test_signup_form(self):
85 new_user = get_user_model().objects.create_user( # noqa: F841 1g
86 self.username, self.email
87 )
88 self.assertEqual(get_user_model().objects.all().count(), 1) 1g
89 self.assertEqual(get_user_model().objects.all()[0].username, self.username) 1g
90 self.assertEqual(get_user_model().objects.all()[0].email, self.email) 1g
93# The following six tests check that default auth templates are being
94# overwritten by local, custom templates.
95class LoginPageTests(TestCase):
96 def setUp(self):
97 url = reverse("account_login")
98 self.response = self.client.get(url)
100 def test_login_template(self):
101 self.assertEqual(self.response.status_code, 200) 1h
102 self.assertTemplateUsed(self.response, "account/login.html") 1h
103 self.assertContains(self.response, "Log In") 1h
104 self.assertNotContains(self.response, "This does not belong here.") 1h
107class LogoutPageTests(TestCase):
108 def setUp(self):
109 url = reverse("account_logout")
110 self.response = self.client.get(url)
112 def test_logout_template(self):
113 """Redirects to home. all-auth with ask to confirm
114 and present an actual logout page to test.
115 """
116 self.assertEqual(self.response.status_code, 302) 1n
117 # self.assertTemplateUsed(self.response, "home.html")
118 # self.assertContains(self.response, "Track your tasks.")
119 # self.assertNotContains(self.response, "This does not belong here.")
122class PasswordResetFormTests(TestCase):
123 def setUp(self):
124 url = reverse("account_reset_password")
125 self.response = self.client.get(url)
127 def test_password_reset_form_template(self):
128 self.assertEqual(self.response.status_code, 200) 1i
129 self.assertTemplateUsed(self.response, "account/password_reset.html") 1i
130 self.assertContains(self.response, "Password Reset") 1i
131 self.assertNotContains(self.response, "This does not belong here.") 1i
134class PasswordResetDoneTests(TestCase):
135 def setUp(self):
136 url = reverse("account_reset_password_done")
137 self.response = self.client.get(url)
139 def test_password_reset_done_template(self):
140 self.assertEqual(self.response.status_code, 200) 1j
141 self.assertTemplateUsed(self.response, "account/password_reset_done.html") 1j
142 self.assertContains(self.response, "We have sent you an e-mail") 1j
143 self.assertNotContains(self.response, "This does not belong here.") 1j
146class PasswordChangeFormTests(TestCase):
147 def setUp(self):
148 url = reverse("account_set_password")
149 self.response = self.client.get(url)
151 def test_password_change_form_template(self):
152 """Unsure why a 302 response is being generated for the
153 remaining tests. This makes it difficult to test for templates
154 being used. Need research to fix tests.
155 """
156 self.assertEqual(self.response.status_code, 302) 1o
157 # self.assertTemplateUsed(self.response,
158 # "account/password_change.html")
159 # self.assertContains(self.response, "Change Password")
160 # self.assertNotContains(self.response, "This does not belong here.")
163class PasswordChangeDoneTests(TestCase):
164 def setUp(self):
165 url = reverse("account_reset_password_done")
166 self.response = self.client.get(url)
168 def test_password_change_done_template(self):
169 self.assertEqual(self.response.status_code, 200) 1k
170 self.assertTemplateUsed(self.response, "account/password_reset_done.html") 1k
171 self.assertContains(self.response, "We have sent you an e-mail") 1k
172 self.assertNotContains(self.response, "This does not belong here.") 1k