Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

auth_tests.py 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import re
  2. from django.contrib.auth import models
  3. from django.core.urlresolvers import reverse
  4. from django.core import mail
  5. from django_webtest import WebTest
  6. class TestAUserWhoseForgottenHerPassword(WebTest):
  7. def test_can_reset_her_password(self):
  8. username, email, password = 'lucy', 'lucy@example.com', 'password'
  9. models.User.objects.create_user(
  10. username, email, password
  11. )
  12. # Fill in password reset form
  13. page = self.app.get(reverse('password-reset'))
  14. form = page.forms['password_reset_form']
  15. form['email'] = email
  16. response = form.submit()
  17. # Response should be a redirect and an email should have been sent
  18. self.assertEqual(302, response.status_code)
  19. self.assertEqual(1, len(mail.outbox))
  20. # Extract URL from email
  21. email_body = mail.outbox[0].body
  22. urlfinder = re.compile(r"http://example.com(?P<path>[-A-Za-z0-9\/\._]+)")
  23. matches = urlfinder.search(email_body, re.MULTILINE)
  24. self.assertTrue('path' in matches.groupdict())
  25. path = matches.groupdict()['path']
  26. # Reset password and check we get redirect
  27. reset_page = self.app.get(path)
  28. form = reset_page.forms['password_reset_form']
  29. form['new_password1'] = 'monkey'
  30. form['new_password2'] = 'monkey'
  31. response = form.submit()
  32. self.assertEqual(302, response.status_code)
  33. # Now attempt to login with new password
  34. url = reverse('customer:login')
  35. form = self.app.get(url).forms['login_form']
  36. form['login-username'] = email
  37. form['login-password'] = 'monkey'
  38. response = form.submit('login_submit')
  39. self.assertEqual(302, response.status_code)