1
- from django .test import Client , RequestFactory , TestCase
2
- from blog .models import Article , Category , Tag
3
- from django .contrib .auth import get_user_model
4
- from DjangoBlog .utils import delete_view_cache , delete_sidebar_cache
5
- from accounts .models import BlogUser
6
1
from django .urls import reverse
7
- from DjangoBlog .utils import *
8
2
from django .conf import settings
9
3
from django .utils import timezone
4
+ from django .test import Client , RequestFactory , TestCase
5
+
6
+ from accounts .models import BlogUser
7
+ from DjangoBlog .utils import *
8
+ from blog .models import Article , Category
9
+ from . import email
10
10
11
11
12
12
# Create your tests here.
@@ -15,6 +15,12 @@ class AccountTest(TestCase):
15
15
def setUp (self ):
16
16
self .client = Client ()
17
17
self .factory = RequestFactory ()
18
+ self .blog_user = BlogUser .objects .create_user (
19
+ username = "test" ,
20
+
21
+ password = "12345678"
22
+ )
23
+ self .new_test = "xxx123--="
18
24
19
25
def test_validate_account (self ):
20
26
site = get_current_site ().domain
@@ -111,3 +117,101 @@ def test_validate_register(self):
111
117
112
118
response = self .client .get (article .get_admin_url ())
113
119
self .assertIn (response .status_code , [301 , 302 , 200 ])
120
+
121
+ def test_verify_email_code (self ):
122
+
123
+ code = email .generate_code ()
124
+ email .set_code (to_email , code )
125
+ email .send (to_email , code )
126
+
127
+ err = email .
verify (
"[email protected] " ,
code )
128
+ self .assertEqual (err , None )
129
+
130
+ err = email .
verify (
"[email protected] " ,
code )
131
+ self .assertEqual (type (err ), str )
132
+
133
+ def test_forget_password_email_code_success (self ):
134
+ resp = self .client .post (
135
+ path = reverse ("account:forget_password_code" ),
136
+ data = dict (
email = "[email protected] " )
137
+ )
138
+
139
+ self .assertEqual (resp .status_code , 200 )
140
+ self .assertEqual (resp .content .decode ("utf-8" ), "ok" )
141
+
142
+ def test_forget_password_email_code_fail (self ):
143
+ resp = self .client .post (
144
+ path = reverse ("account:forget_password_code" ),
145
+ data = dict ()
146
+ )
147
+ self .assertEqual (resp .content .decode ("utf-8" ), "错误的邮箱" )
148
+
149
+ resp = self .client .post (
150
+ path = reverse ("account:forget_password_code" ),
151
+ data = dict (email = "admin@com" )
152
+ )
153
+ self .assertEqual (resp .content .decode ("utf-8" ), "错误的邮箱" )
154
+
155
+ def test_forget_password_email_success (self ):
156
+ code = email .generate_code ()
157
+ email .set_code (self .blog_user .email , code )
158
+ data = dict (
159
+ new_password1 = self .new_test ,
160
+ new_password2 = self .new_test ,
161
+ email = self .blog_user .email ,
162
+ code = code ,
163
+ )
164
+ resp = self .client .post (
165
+ path = reverse ("account:forget_password" ),
166
+ data = data
167
+ )
168
+ self .assertEqual (resp .status_code , 302 )
169
+
170
+ # 验证用户密码是否修改成功
171
+ blog_user = BlogUser .objects .filter (
172
+ email = self .blog_user .email ,
173
+ ).first () # type: BlogUser
174
+ self .assertNotEqual (blog_user , None )
175
+ self .assertEqual (blog_user .check_password (data ["new_password1" ]), True )
176
+
177
+ def test_forget_password_email_not_user (self ):
178
+ data = dict (
179
+ new_password1 = self .new_test ,
180
+ new_password2 = self .new_test ,
181
+
182
+ code = "123456" ,
183
+ )
184
+ resp = self .client .post (
185
+ path = reverse ("account:forget_password" ),
186
+ data = data
187
+ )
188
+
189
+ self .assertEqual (resp .status_code , 200 )
190
+ self .assertFormError (
191
+ response = resp ,
192
+ form = "form" ,
193
+ field = "email" ,
194
+ errors = "未找到邮箱对应的用户"
195
+ )
196
+
197
+ def test_forget_password_email_code_error (self ):
198
+ code = email .generate_code ()
199
+ email .set_code (self .blog_user .email , code )
200
+ data = dict (
201
+ new_password1 = self .new_test ,
202
+ new_password2 = self .new_test ,
203
+ email = self .blog_user .email ,
204
+ code = "111111" ,
205
+ )
206
+ resp = self .client .post (
207
+ path = reverse ("account:forget_password" ),
208
+ data = data
209
+ )
210
+
211
+ self .assertEqual (resp .status_code , 200 )
212
+ self .assertFormError (
213
+ response = resp ,
214
+ form = "form" ,
215
+ field = "code" ,
216
+ errors = "验证码错误"
217
+ )
0 commit comments