Coverage for accounts/tests/test_models.py: 96.30%
108 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-29 10:34 -0700
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-29 10:34 -0700
1from django.contrib.auth import get_user_model 1a
2from django.test import TestCase 1a
3from django.urls import reverse 1a
6class CustomUserTests(TestCase): 1a
7 def setUp(self): 1a
8 User = get_user_model() 1a
9 self.user = User.objects.create_user( 1a
10 username="kevin",
11 email="kevin@example.com",
12 password="T3stP@5s123",
13 )
15 self.super_user = User.objects.create_superuser( 1a
16 username="superadmin",
17 email="superadmin@example.com",
18 password="T3stP@5s123",
19 )
21 def test___str__(self): 1a
22 assert str(self.user) == self.user.username 1a
24 def test_user_get_absolute_url(self): 1a
25 assert self.user.get_absolute_url() == f"/accounts/{self.user.username}/" 1a
27 def test_create_user(self): 1a
28 self.assertEqual(self.user.username, "kevin") 1a
29 self.assertEqual(self.user.email, "kevin@example.com") 1a
30 self.assertTrue(self.user.is_active) 1a
31 self.assertFalse(self.user.is_staff) 1a
32 self.assertFalse(self.user.is_superuser) 1a
34 def test_user_asserts(self): 1a
35 User = get_user_model() 1a
36 try: 1a
37 self.assertIsNotNone(self.user.username) 1a
38 except AttributeError:
39 pass
40 with self.assertRaises(TypeError): 1a
41 User.objects.create_user() 1a
42 with self.assertRaises(TypeError): 1a
43 User.objects.create_user(email="") 1a
44 with self.assertRaises(ValueError): 1a
45 User.objects.create_user(username="", email="", password="foo") 1a
47 def test_create_superuser(self): 1a
48 self.assertEqual(self.super_user.username, "superadmin") 1a
49 self.assertEqual(self.super_user.email, "superadmin@example.com") 1a
50 self.assertTrue(self.super_user.is_active) 1a
51 self.assertTrue(self.super_user.is_staff) 1a
52 self.assertTrue(self.super_user.is_superuser) 1a
54 def test_superuser_asserts(self): 1a
55 User = get_user_model() 1a
56 try: 1a
57 self.assertIsNotNone(self.super_user.username) 1a
58 except AttributeError:
59 pass
60 with self.assertRaises(ValueError): 1a
61 User.objects.create_superuser( 1a
62 username="",
63 email="super@user.com",
64 password="foo",
65 is_superuser=False,
66 )
69class SignupPageTests(TestCase): 1a
70 username = "newuser" 1a
71 email = "newuser@example.com" 1a
73 def setUp(self): 1a
74 url = reverse("account_signup") 1a
75 self.response = self.client.get(url) 1a
77 def test_signup_template(self): 1a
78 self.assertEqual(self.response.status_code, 200) 1a
79 self.assertTemplateUsed(self.response, "account/signup.html") 1a
80 self.assertContains(self.response, "Sign Up") 1a
81 self.assertNotContains(self.response, "I do not belong here") 1a
83 def test_signup_form(self): 1a
84 # new_user = get_user_model().objects.create_user(
85 get_user_model().objects.create_user( 1a
86 self.username, self.email
87 )
88 self.assertEqual(get_user_model().objects.all().count(), 1) 1a
89 self.assertEqual(get_user_model().objects.all()[0].username, self.username) 1a
90 self.assertEqual(get_user_model().objects.all()[0].email, self.email) 1a
93# The following six tests check that default auth templates are being
94# overwritten by local, custom templates.
95class LoginPageTests(TestCase): 1a
96 def setUp(self): 1a
97 url = reverse("account_login") 1a
98 self.response = self.client.get(url) 1a
100 def test_login_template(self): 1a
101 self.assertEqual(self.response.status_code, 200) 1a
102 self.assertTemplateUsed(self.response, "account/login.html") 1a
103 self.assertContains(self.response, "Log In") 1a
104 self.assertNotContains(self.response, "This does not belong here.") 1a
107class LogoutPageTests(TestCase): 1a
108 def setUp(self): 1a
109 url = reverse("account_logout") 1a
110 self.response = self.client.get(url) 1a
112 def test_logout_template(self): 1a
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) 1a
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): 1a
123 def setUp(self): 1a
124 url = reverse("account_reset_password") 1a
125 self.response = self.client.get(url) 1a
127 def test_password_reset_form_template(self): 1a
128 self.assertEqual(self.response.status_code, 200) 1a
129 self.assertTemplateUsed(self.response, "account/password_reset.html") 1a
130 self.assertContains(self.response, "Password Reset") 1a
131 self.assertNotContains(self.response, "This does not belong here.") 1a
134class PasswordResetDoneTests(TestCase): 1a
135 def setUp(self): 1a
136 url = reverse("account_reset_password_done") 1a
137 self.response = self.client.get(url) 1a
139 def test_password_reset_done_template(self): 1a
140 self.assertEqual(self.response.status_code, 200) 1a
141 self.assertTemplateUsed(self.response, "account/password_reset_done.html") 1a
142 self.assertContains(self.response, "We have sent you an e-mail") 1a
143 self.assertNotContains(self.response, "This does not belong here.") 1a
146class PasswordChangeFormTests(TestCase): 1a
147 def setUp(self): 1a
148 url = reverse("account_set_password") 1a
149 self.response = self.client.get(url) 1a
151 def test_password_change_form_template(self): 1a
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) 1a
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): 1a
164 def setUp(self): 1a
165 url = reverse("account_reset_password_done") 1a
166 self.response = self.client.get(url) 1a
168 def test_password_change_done_template(self): 1a
169 self.assertEqual(self.response.status_code, 200) 1a
170 self.assertTemplateUsed(self.response, "account/password_reset_done.html") 1a
171 self.assertContains(self.response, "We have sent you an e-mail") 1a
172 self.assertNotContains(self.response, "This does not belong here.") 1a