test_forgottenpassword_views.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from django.contrib.auth import get_user_model
  2. from django.core import mail
  3. from django.core.urlresolvers import reverse
  4. from django.test import TestCase
  5. from misago.users.models import Ban, BAN_USERNAME
  6. from misago.users.tokens import make_password_reset_token
  7. class ForgottenPasswordViewsTests(TestCase):
  8. def test_view_get_returns_200(self):
  9. """request new password view returns 200 on GET"""
  10. response = self.client.get(reverse('misago:request_password_reset'))
  11. self.assertEqual(response.status_code, 200)
  12. def test_view_submit(self):
  13. """request new password view sends confirmation mail"""
  14. User = get_user_model()
  15. User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  16. response = self.client.post(
  17. reverse('misago:request_password_reset'),
  18. data={'username': 'Bob'})
  19. self.assertEqual(response.status_code, 302)
  20. self.assertIn('password change', mail.outbox[0].subject)
  21. def test_view_submit_banned(self):
  22. """request new password view errors for banned users"""
  23. User = get_user_model()
  24. User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  25. Ban.objects.create(test=BAN_USERNAME, banned_value='bob',
  26. user_message='Nope!')
  27. response = self.client.post(
  28. reverse('misago:request_password_reset'),
  29. data={'username': 'Bob'})
  30. self.assertEqual(response.status_code, 200)
  31. self.assertIn('Nope!', response.content)
  32. self.assertTrue(not mail.outbox)
  33. def test_view_submit_inactive(self):
  34. """request new password view errors for inactive users"""
  35. User = get_user_model()
  36. User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  37. requires_activation=1)
  38. response = self.client.post(
  39. reverse('misago:request_password_reset'),
  40. data={'username': 'Bob'})
  41. self.assertEqual(response.status_code, 200)
  42. self.assertIn('activate', response.content)
  43. self.assertTrue(not mail.outbox)
  44. def test_change_password_on_banned(self):
  45. """change banned user password errors"""
  46. User = get_user_model()
  47. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  48. old_password = test_user.password
  49. Ban.objects.create(test=BAN_USERNAME, banned_value='bob',
  50. user_message='Nope!')
  51. password_token = make_password_reset_token(test_user)
  52. response = self.client.get(
  53. reverse('misago:reset_password_confirm',
  54. kwargs={'user_id': test_user.pk,
  55. 'token': password_token}))
  56. self.assertEqual(response.status_code, 302)
  57. test_user = User.objects.get(pk=test_user.pk)
  58. self.assertEqual(test_user.password, old_password)
  59. self.assertTrue(not mail.outbox)
  60. def test_change_password_on_inactive(self):
  61. """change inactive user password errors"""
  62. User = get_user_model()
  63. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  64. requires_activation=1)
  65. old_password = test_user.password
  66. password_token = make_password_reset_token(test_user)
  67. response = self.client.get(
  68. reverse('misago:reset_password_confirm',
  69. kwargs={'user_id': test_user.pk,
  70. 'token': password_token}))
  71. self.assertEqual(response.status_code, 302)
  72. test_user = User.objects.get(pk=test_user.pk)
  73. self.assertEqual(test_user.password, old_password)
  74. self.assertTrue(not mail.outbox)
  75. def test_successful_change(self):
  76. """change allright user password"""
  77. User = get_user_model()
  78. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  79. old_password = test_user.password
  80. password_token = make_password_reset_token(test_user)
  81. response = self.client.get(
  82. reverse('misago:reset_password_confirm',
  83. kwargs={'user_id': test_user.pk,
  84. 'token': password_token}))
  85. self.assertEqual(response.status_code, 302)
  86. test_user = User.objects.get(pk=test_user.pk)
  87. self.assertNotEqual(test_user.password, old_password)
  88. self.assertIn('New password', mail.outbox[0].subject)