test_activation_views.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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_activation_token
  7. class ActivationViewsTests(TestCase):
  8. def test_view_get_returns_200(self):
  9. """request activation view returns 200 on GET"""
  10. response = self.client.get(reverse('misago:request_activation'))
  11. self.assertEqual(response.status_code, 200)
  12. def test_view_submit(self):
  13. """request activation view sends mail"""
  14. User = get_user_model()
  15. User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  16. requires_activation=1)
  17. response = self.client.post(
  18. reverse('misago:request_activation'),
  19. data={'username': 'Bob'})
  20. self.assertEqual(response.status_code, 302)
  21. self.assertIn('Account activation', mail.outbox[0].subject)
  22. def test_view_submit_banned(self):
  23. """request activation for banned shows error"""
  24. User = get_user_model()
  25. User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  26. requires_activation=1)
  27. Ban.objects.create(check_type=BAN_USERNAME,
  28. banned_value='bob',
  29. user_message='Nope!')
  30. response = self.client.post(
  31. reverse('misago:request_activation'),
  32. data={'username': 'Bob'})
  33. self.assertEqual(response.status_code, 200)
  34. self.assertIn('Nope!', response.content)
  35. self.assertTrue(not mail.outbox)
  36. def test_view_submit_active(self):
  37. """request activation for active shows error"""
  38. User = get_user_model()
  39. User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  40. response = self.client.post(
  41. reverse('misago:request_activation'),
  42. data={'username': 'Bob'})
  43. self.assertEqual(response.status_code, 200)
  44. self.assertIn('already active', response.content)
  45. self.assertTrue(not mail.outbox)
  46. def test_view_activate_banned(self):
  47. """activate banned user shows error"""
  48. User = get_user_model()
  49. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  50. requires_activation=1)
  51. Ban.objects.create(check_type=BAN_USERNAME,
  52. banned_value='bob',
  53. user_message='Nope!')
  54. activation_token = make_activation_token(test_user)
  55. response = self.client.get(
  56. reverse('misago:activate_by_token',
  57. kwargs={'user_id': test_user.pk,
  58. 'token': activation_token}))
  59. self.assertEqual(response.status_code, 302)
  60. test_user = User.objects.get(pk=test_user.pk)
  61. self.assertEqual(test_user.requires_activation, 1)
  62. def test_view_activate_active(self):
  63. """activate active user shows error"""
  64. User = get_user_model()
  65. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  66. activation_token = make_activation_token(test_user)
  67. response = self.client.get(
  68. reverse('misago:activate_by_token',
  69. kwargs={'user_id': test_user.pk,
  70. 'token': activation_token}))
  71. self.assertEqual(response.status_code, 302)
  72. test_user = User.objects.get(pk=test_user.pk)
  73. self.assertEqual(test_user.requires_activation, 0)
  74. def test_view_activate_inactive(self):
  75. """activate inactive user passess"""
  76. User = get_user_model()
  77. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  78. requires_activation=1)
  79. activation_token = make_activation_token(test_user)
  80. response = self.client.get(
  81. reverse('misago:activate_by_token',
  82. kwargs={'user_id': test_user.pk,
  83. 'token': activation_token}))
  84. self.assertEqual(response.status_code, 302)
  85. test_user = User.objects.get(pk=test_user.pk)
  86. self.assertEqual(test_user.requires_activation, 0)