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

1from django.contrib.auth import get_user_model 1a

2from django.test import TestCase 1a

3from django.urls import reverse 1a

4 

5 

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 ) 

14 

15 self.super_user = User.objects.create_superuser( 1a

16 username="superadmin", 

17 email="superadmin@example.com", 

18 password="T3stP@5s123", 

19 ) 

20 

21 def test___str__(self): 1a

22 assert str(self.user) == self.user.username 1a

23 

24 def test_user_get_absolute_url(self): 1a

25 assert self.user.get_absolute_url() == f"/accounts/{self.user.username}/" 1a

26 

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

33 

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

46 

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

53 

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 ) 

67 

68 

69class SignupPageTests(TestCase): 1a

70 username = "newuser" 1a

71 email = "newuser@example.com" 1a

72 

73 def setUp(self): 1a

74 url = reverse("account_signup") 1a

75 self.response = self.client.get(url) 1a

76 

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

82 

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

91 

92 

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

99 

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

105 

106 

107class LogoutPageTests(TestCase): 1a

108 def setUp(self): 1a

109 url = reverse("account_logout") 1a

110 self.response = self.client.get(url) 1a

111 

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.") 

120 

121 

122class PasswordResetFormTests(TestCase): 1a

123 def setUp(self): 1a

124 url = reverse("account_reset_password") 1a

125 self.response = self.client.get(url) 1a

126 

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

132 

133 

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

138 

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

144 

145 

146class PasswordChangeFormTests(TestCase): 1a

147 def setUp(self): 1a

148 url = reverse("account_set_password") 1a

149 self.response = self.client.get(url) 1a

150 

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.") 

161 

162 

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

167 

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