test_activation_views.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. from django.contrib.auth import get_user_model
  2. from django.test import TestCase
  3. from django.urls import reverse
  4. from misago.core.utils import encode_json_html
  5. from misago.users.models import Ban
  6. from misago.users.tokens import make_activation_token
  7. UserModel = get_user_model()
  8. class ActivationViewsTests(TestCase):
  9. def test_request_view_returns_200(self):
  10. """request new activation link view returns 200"""
  11. response = self.client.get(reverse('misago:request-activation'))
  12. self.assertEqual(response.status_code, 200)
  13. def test_view_activate_banned(self):
  14. """activate banned user shows error"""
  15. test_user = UserModel.objects.create_user(
  16. 'Bob', 'bob@test.com', 'Pass.123', requires_activation=1
  17. )
  18. Ban.objects.create(
  19. check_type=Ban.USERNAME,
  20. banned_value='bob',
  21. user_message='Nope!',
  22. )
  23. activation_token = make_activation_token(test_user)
  24. response = self.client.get(
  25. reverse(
  26. 'misago:activate-by-token',
  27. kwargs={
  28. 'pk': test_user.pk,
  29. 'token': activation_token,
  30. }
  31. )
  32. )
  33. self.assertContains(response, encode_json_html("<p>Nope!</p>"), status_code=403)
  34. test_user = UserModel.objects.get(pk=test_user.pk)
  35. self.assertEqual(test_user.requires_activation, 1)
  36. def test_view_activate_invalid_token(self):
  37. """activate with invalid token shows error"""
  38. test_user = UserModel.objects.create_user(
  39. 'Bob', 'bob@test.com', 'Pass.123', requires_activation=1
  40. )
  41. activation_token = make_activation_token(test_user)
  42. response = self.client.get(
  43. reverse(
  44. 'misago:activate-by-token',
  45. kwargs={
  46. 'pk': test_user.pk,
  47. 'token': activation_token + 'acd',
  48. }
  49. )
  50. )
  51. self.assertEqual(response.status_code, 400)
  52. test_user = UserModel.objects.get(pk=test_user.pk)
  53. self.assertEqual(test_user.requires_activation, 1)
  54. def test_view_activate_disabled(self):
  55. """activate disabled user shows error"""
  56. test_user = UserModel.objects.create_user(
  57. 'Bob', 'bob@test.com', 'Pass.123', is_active=False
  58. )
  59. activation_token = make_activation_token(test_user)
  60. response = self.client.get(
  61. reverse(
  62. 'misago:activate-by-token',
  63. kwargs={
  64. 'pk': test_user.pk,
  65. 'token': activation_token,
  66. }
  67. )
  68. )
  69. self.assertEqual(response.status_code, 404)
  70. def test_view_activate_active(self):
  71. """activate active user shows error"""
  72. test_user = UserModel.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  73. activation_token = make_activation_token(test_user)
  74. response = self.client.get(
  75. reverse(
  76. 'misago:activate-by-token',
  77. kwargs={
  78. 'pk': test_user.pk,
  79. 'token': activation_token,
  80. }
  81. )
  82. )
  83. self.assertEqual(response.status_code, 200)
  84. test_user = UserModel.objects.get(pk=test_user.pk)
  85. self.assertEqual(test_user.requires_activation, 0)
  86. def test_view_activate_inactive(self):
  87. """activate inactive user passess"""
  88. test_user = UserModel.objects.create_user(
  89. 'Bob', 'bob@test.com', 'Pass.123', requires_activation=1
  90. )
  91. activation_token = make_activation_token(test_user)
  92. response = self.client.get(
  93. reverse(
  94. 'misago:activate-by-token',
  95. kwargs={
  96. 'pk': test_user.pk,
  97. 'token': activation_token,
  98. }
  99. )
  100. )
  101. self.assertEqual(response.status_code, 200)
  102. self.assertContains(response, "your account has been activated!")
  103. test_user = UserModel.objects.get(pk=test_user.pk)
  104. self.assertEqual(test_user.requires_activation, 0)