test_activation_views.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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 ..models import BAN_USERNAME, Ban
  6. from ..tokens import make_activation_token
  7. class ActivationViewsTests(TestCase):
  8. def test_request_view_returns_200(self):
  9. """request new activation link view returns 200"""
  10. response = self.client.get(reverse('misago:request-activation'))
  11. self.assertEqual(response.status_code, 200)
  12. def test_view_activate_banned(self):
  13. """activate banned user shows error"""
  14. User = get_user_model()
  15. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  16. requires_activation=1)
  17. Ban.objects.create(
  18. check_type=BAN_USERNAME,
  19. banned_value='bob',
  20. user_message='Nope!',
  21. )
  22. activation_token = make_activation_token(test_user)
  23. response = self.client.get(reverse('misago:activate-by-token', kwargs={
  24. 'pk': test_user.pk,
  25. 'token': activation_token,
  26. }))
  27. self.assertContains(
  28. response, encode_json_html("<p>Nope!</p>"), status_code=403)
  29. test_user = User.objects.get(pk=test_user.pk)
  30. self.assertEqual(test_user.requires_activation, 1)
  31. def test_view_activate_invalid_token(self):
  32. """activate with invalid token shows error"""
  33. User = get_user_model()
  34. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  35. requires_activation=1)
  36. activation_token = make_activation_token(test_user)
  37. response = self.client.get(reverse('misago:activate-by-token', kwargs={
  38. 'pk': test_user.pk,
  39. 'token': activation_token + 'acd',
  40. }))
  41. self.assertEqual(response.status_code, 400)
  42. test_user = User.objects.get(pk=test_user.pk)
  43. self.assertEqual(test_user.requires_activation, 1)
  44. def test_view_activate_disabled(self):
  45. """activate disabled user shows error"""
  46. User = get_user_model()
  47. test_user = User.objects.create_user(
  48. 'Bob', 'bob@test.com', 'Pass.123', is_active=False)
  49. activation_token = make_activation_token(test_user)
  50. response = self.client.get(reverse('misago:activate-by-token', kwargs={
  51. 'pk': test_user.pk,
  52. 'token': activation_token,
  53. }))
  54. self.assertEqual(response.status_code, 404)
  55. def test_view_activate_active(self):
  56. """activate active user shows error"""
  57. User = get_user_model()
  58. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  59. activation_token = make_activation_token(test_user)
  60. response = self.client.get(reverse('misago:activate-by-token', kwargs={
  61. 'pk': test_user.pk,
  62. 'token': activation_token,
  63. }))
  64. self.assertEqual(response.status_code, 200)
  65. test_user = User.objects.get(pk=test_user.pk)
  66. self.assertEqual(test_user.requires_activation, 0)
  67. def test_view_activate_inactive(self):
  68. """activate inactive user passess"""
  69. User = get_user_model()
  70. test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123',
  71. requires_activation=1)
  72. activation_token = make_activation_token(test_user)
  73. response = self.client.get(reverse('misago:activate-by-token', kwargs={
  74. 'pk': test_user.pk,
  75. 'token': activation_token,
  76. }))
  77. self.assertEqual(response.status_code, 200)
  78. self.assertContains(response, "your account has been activated!")
  79. test_user = User.objects.get(pk=test_user.pk)
  80. self.assertEqual(test_user.requires_activation, 0)