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

1from django.contrib.auth import get_user_model 

2from django.test import TestCase 

3from django.urls import reverse 

4 

5 

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 ) 

14 

15 self.super_user = User.objects.create_superuser( 

16 username="superadmin", 

17 email="superadmin@example.com", 

18 password="T3stP@5s123", 

19 ) 

20 

21 def test___str__(self): 

22 assert self.user.__str__() == self.user.username 1l

23 assert str(self.user) == self.user.username 1l

24 

25 def test_user_get_absolute_url(self): 

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

27 

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

34 

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

47 

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

54 

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 ) 

68 

69 

70class SignupPageTests(TestCase): 

71 username = "newuser" 

72 email = "newuser@example.com" 

73 

74 def setUp(self): 

75 url = reverse("account_signup") 

76 self.response = self.client.get(url) 

77 

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

83 

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

91 

92 

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) 

99 

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

105 

106 

107class LogoutPageTests(TestCase): 

108 def setUp(self): 

109 url = reverse("account_logout") 

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

111 

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

120 

121 

122class PasswordResetFormTests(TestCase): 

123 def setUp(self): 

124 url = reverse("account_reset_password") 

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

126 

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

132 

133 

134class PasswordResetDoneTests(TestCase): 

135 def setUp(self): 

136 url = reverse("account_reset_password_done") 

137 self.response = self.client.get(url) 

138 

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

144 

145 

146class PasswordChangeFormTests(TestCase): 

147 def setUp(self): 

148 url = reverse("account_set_password") 

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

150 

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

161 

162 

163class PasswordChangeDoneTests(TestCase): 

164 def setUp(self): 

165 url = reverse("account_reset_password_done") 

166 self.response = self.client.get(url) 

167 

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