test_context_processors.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. from django.urls import reverse
  2. from misago.legal.context_processors import legal_links
  3. from misago.legal.models import Agreement
  4. from misago.users.testutils import AuthenticatedUserTestCase
  5. class MockRequest(object):
  6. def __init__(self, user):
  7. self.user = user
  8. self.frontend_context = {}
  9. def get_host(self):
  10. return 'testhost.com'
  11. class PrivacyPolicyTests(AuthenticatedUserTestCase):
  12. def setUp(self):
  13. super(PrivacyPolicyTests, self).setUp()
  14. Agreement.objects.invalidate_cache()
  15. def tearDown(self):
  16. Agreement.objects.invalidate_cache()
  17. def test_context_processor_no_policy(self):
  18. """context processor has no TOS link"""
  19. context_dict = legal_links(MockRequest(self.user))
  20. self.assertEqual(context_dict, {
  21. 'TERMS_OF_SERVICE_URL': None,
  22. 'PRIVACY_POLICY_URL': None,
  23. 'misago_agreement': None,
  24. })
  25. def test_context_processor_misago_policy(self):
  26. """context processor has TOS link to Misago view"""
  27. Agreement.objects.create(
  28. type=Agreement.TYPE_PRIVACY,
  29. text='Lorem ipsum',
  30. is_active=True,
  31. )
  32. context_dict = legal_links(MockRequest(self.user))
  33. self.assertEqual(context_dict, {
  34. 'TERMS_OF_SERVICE_URL': None,
  35. 'PRIVACY_POLICY_URL': reverse('misago:privacy-policy'),
  36. 'misago_agreement': {
  37. 'title': 'Privacy policy',
  38. 'link': None,
  39. 'text': '<p>Lorem ipsum</p>',
  40. },
  41. })
  42. def test_context_processor_remote_policy(self):
  43. """context processor has TOS link to remote url"""
  44. agreement = Agreement.objects.create(
  45. type=Agreement.TYPE_PRIVACY,
  46. link='http://test.com',
  47. is_active=True,
  48. )
  49. context_dict = legal_links(MockRequest(self.user))
  50. self.assertEqual(context_dict, {
  51. 'TERMS_OF_SERVICE_URL': None,
  52. 'PRIVACY_POLICY_URL': 'http://test.com',
  53. 'misago_agreement': {
  54. 'title': 'Privacy policy',
  55. 'link': 'http://test.com',
  56. 'text': None,
  57. },
  58. })
  59. # set misago view too
  60. agreement.text = 'Lorem ipsum'
  61. agreement.save()
  62. context_dict = legal_links(MockRequest(self.user))
  63. self.assertEqual(context_dict, {
  64. 'TERMS_OF_SERVICE_URL': None,
  65. 'PRIVACY_POLICY_URL': 'http://test.com',
  66. 'misago_agreement': {
  67. 'title': 'Privacy policy',
  68. 'link': 'http://test.com',
  69. 'text': '<p>Lorem ipsum</p>',
  70. },
  71. })
  72. class TermsOfServiceTests(AuthenticatedUserTestCase):
  73. def setUp(self):
  74. super(TermsOfServiceTests, self).setUp()
  75. Agreement.objects.invalidate_cache()
  76. def tearDown(self):
  77. Agreement.objects.invalidate_cache()
  78. def test_context_processor_no_tos(self):
  79. """context processor has no TOS link"""
  80. context_dict = legal_links(MockRequest(self.user))
  81. self.assertEqual(context_dict, {
  82. 'TERMS_OF_SERVICE_URL': None,
  83. 'PRIVACY_POLICY_URL': None,
  84. 'misago_agreement': None,
  85. })
  86. def test_context_processor_misago_tos(self):
  87. """context processor has TOS link to Misago view"""
  88. Agreement.objects.create(
  89. type=Agreement.TYPE_TOS,
  90. text='Lorem ipsum',
  91. is_active=True,
  92. )
  93. context_dict = legal_links(MockRequest(self.user))
  94. self.assertEqual(
  95. context_dict, {
  96. 'TERMS_OF_SERVICE_URL': reverse('misago:terms-of-service'),
  97. 'PRIVACY_POLICY_URL': None,
  98. 'misago_agreement': {
  99. 'title': 'Terms of service',
  100. 'link': None,
  101. 'text': '<p>Lorem ipsum</p>',
  102. }
  103. }
  104. )
  105. def test_context_processor_remote_tos(self):
  106. """context processor has TOS link to remote url"""
  107. agreement = Agreement.objects.create(
  108. type=Agreement.TYPE_TOS,
  109. link='http://test.com',
  110. is_active=True,
  111. )
  112. context_dict = legal_links(MockRequest(self.user))
  113. self.assertEqual(context_dict, {
  114. 'TERMS_OF_SERVICE_URL': 'http://test.com',
  115. 'PRIVACY_POLICY_URL': None,
  116. 'misago_agreement': {
  117. 'title': 'Terms of service',
  118. 'link': 'http://test.com',
  119. 'text': None,
  120. }
  121. })
  122. # set misago view too
  123. agreement.text = 'Lorem ipsum'
  124. agreement.save()
  125. context_dict = legal_links(MockRequest(self.user))
  126. self.assertEqual(context_dict, {
  127. 'TERMS_OF_SERVICE_URL': 'http://test.com',
  128. 'PRIVACY_POLICY_URL': None,
  129. 'misago_agreement': {
  130. 'title': 'Terms of service',
  131. 'link': 'http://test.com',
  132. 'text': '<p>Lorem ipsum</p>',
  133. },
  134. })