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 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import re
  2. from django.contrib.auth import models
  3. from django.contrib.auth.models import User
  4. from django.core import mail
  5. from django.core.urlresolvers import reverse
  6. from django_webtest import WebTest
  7. from oscar.test import WebTestCase
  8. class TestAUserWhoseForgottenHerPassword(WebTest):
  9. def test_can_reset_her_password(self):
  10. username, email, password = 'lucy', 'lucy@example.com', 'password'
  11. models.User.objects.create_user(
  12. username, email, password)
  13. # Fill in password reset form
  14. page = self.app.get(reverse('password-reset'))
  15. form = page.forms['password_reset_form']
  16. form['email'] = email
  17. response = form.submit()
  18. # Response should be a redirect and an email should have been sent
  19. self.assertEqual(302, response.status_code)
  20. self.assertEqual(1, len(mail.outbox))
  21. # Extract URL from email
  22. email_body = mail.outbox[0].body
  23. urlfinder = re.compile(r"http://example.com(?P<path>[-A-Za-z0-9\/\._]+)")
  24. matches = urlfinder.search(email_body, re.MULTILINE)
  25. self.assertTrue('path' in matches.groupdict())
  26. path = matches.groupdict()['path']
  27. # Reset password and check we get redirect
  28. reset_page = self.app.get(path)
  29. form = reset_page.forms['password_reset_form']
  30. form['new_password1'] = 'monkey'
  31. form['new_password2'] = 'monkey'
  32. response = form.submit()
  33. self.assertEqual(302, response.status_code)
  34. # Now attempt to login with new password
  35. url = reverse('customer:login')
  36. form = self.app.get(url).forms['login_form']
  37. form['login-username'] = email
  38. form['login-password'] = 'monkey'
  39. response = form.submit('login_submit')
  40. self.assertEqual(302, response.status_code)
  41. class TestAnAnonymousUser(WebTestCase):
  42. def test_can_login(self):
  43. email, password = 'd@d.com', 'mypassword'
  44. User.objects.create_user('_', email, password)
  45. url = reverse('customer:login')
  46. form = self.app.get(url).forms['login_form']
  47. form['login-username'] = email
  48. form['login-password'] = password
  49. response = form.submit('login_submit')
  50. self.assertRedirectsTo(response, 'customer:summary')
  51. def test_can_register(self):
  52. url = reverse('customer:register')
  53. form = self.app.get(url).forms['register_form']
  54. form['registration-email'] = 'terry@boom.com'
  55. form['registration-password1'] = 'hedgehog'
  56. form['registration-password2'] = 'hedgehog'
  57. response = form.submit()
  58. self.assertRedirectsTo(response, 'customer:summary')