test_activation_views.py 3.5 KB

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