test_context_processors.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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_ID': None,
  22. 'TERMS_OF_SERVICE_URL': None,
  23. 'PRIVACY_POLICY_ID': None,
  24. 'PRIVACY_POLICY_URL': None,
  25. 'misago_agreement': None,
  26. })
  27. def test_context_processor_misago_policy(self):
  28. """context processor has TOS link to Misago view"""
  29. agreement = Agreement.objects.create(
  30. type=Agreement.TYPE_PRIVACY,
  31. text='Lorem ipsum',
  32. is_active=True,
  33. )
  34. context_dict = legal_links(MockRequest(self.user))
  35. self.assertEqual(context_dict, {
  36. 'TERMS_OF_SERVICE_ID': None,
  37. 'TERMS_OF_SERVICE_URL': None,
  38. 'PRIVACY_POLICY_ID': agreement.id,
  39. 'PRIVACY_POLICY_URL': reverse('misago:privacy-policy'),
  40. 'misago_agreement': {
  41. 'type': 'Privacy policy',
  42. 'title': 'Privacy policy',
  43. 'link': None,
  44. 'text': '<p>Lorem ipsum</p>',
  45. },
  46. })
  47. def test_context_processor_remote_policy(self):
  48. """context processor has TOS link to remote url"""
  49. agreement = Agreement.objects.create(
  50. type=Agreement.TYPE_PRIVACY,
  51. link='http://test.com',
  52. is_active=True,
  53. )
  54. context_dict = legal_links(MockRequest(self.user))
  55. self.assertEqual(context_dict, {
  56. 'TERMS_OF_SERVICE_ID': None,
  57. 'TERMS_OF_SERVICE_URL': None,
  58. 'PRIVACY_POLICY_ID': agreement.id,
  59. 'PRIVACY_POLICY_URL': 'http://test.com',
  60. 'misago_agreement': {
  61. 'type': 'Privacy policy',
  62. 'title': 'Privacy policy',
  63. 'link': 'http://test.com',
  64. 'text': None,
  65. },
  66. })
  67. # set misago view too
  68. agreement.text = 'Lorem ipsum'
  69. agreement.save()
  70. context_dict = legal_links(MockRequest(self.user))
  71. self.assertEqual(context_dict, {
  72. 'TERMS_OF_SERVICE_ID': None,
  73. 'TERMS_OF_SERVICE_URL': None,
  74. 'PRIVACY_POLICY_ID': agreement.id,
  75. 'PRIVACY_POLICY_URL': 'http://test.com',
  76. 'misago_agreement': {
  77. 'type': 'Privacy policy',
  78. 'title': 'Privacy policy',
  79. 'link': 'http://test.com',
  80. 'text': '<p>Lorem ipsum</p>',
  81. },
  82. })
  83. class TermsOfServiceTests(AuthenticatedUserTestCase):
  84. def setUp(self):
  85. super(TermsOfServiceTests, self).setUp()
  86. Agreement.objects.invalidate_cache()
  87. def tearDown(self):
  88. Agreement.objects.invalidate_cache()
  89. def test_context_processor_no_tos(self):
  90. """context processor has no TOS link"""
  91. context_dict = legal_links(MockRequest(self.user))
  92. self.assertEqual(context_dict, {
  93. 'TERMS_OF_SERVICE_ID': None,
  94. 'TERMS_OF_SERVICE_URL': None,
  95. 'PRIVACY_POLICY_ID': None,
  96. 'PRIVACY_POLICY_URL': None,
  97. 'misago_agreement': None,
  98. })
  99. def test_context_processor_misago_tos(self):
  100. """context processor has TOS link to Misago view"""
  101. agreement = Agreement.objects.create(
  102. type=Agreement.TYPE_TOS,
  103. text='Lorem ipsum',
  104. is_active=True,
  105. )
  106. context_dict = legal_links(MockRequest(self.user))
  107. self.assertEqual(context_dict, {
  108. 'TERMS_OF_SERVICE_ID': agreement.id,
  109. 'TERMS_OF_SERVICE_URL': reverse('misago:terms-of-service'),
  110. 'PRIVACY_POLICY_ID': None,
  111. 'PRIVACY_POLICY_URL': None,
  112. 'misago_agreement': {
  113. 'type': 'Terms of service',
  114. 'title': 'Terms of service',
  115. 'link': None,
  116. 'text': '<p>Lorem ipsum</p>',
  117. }
  118. })
  119. def test_context_processor_remote_tos(self):
  120. """context processor has TOS link to remote url"""
  121. agreement = Agreement.objects.create(
  122. type=Agreement.TYPE_TOS,
  123. link='http://test.com',
  124. is_active=True,
  125. )
  126. context_dict = legal_links(MockRequest(self.user))
  127. self.assertEqual(context_dict, {
  128. 'TERMS_OF_SERVICE_ID': agreement.id,
  129. 'TERMS_OF_SERVICE_URL': 'http://test.com',
  130. 'PRIVACY_POLICY_ID': None,
  131. 'PRIVACY_POLICY_URL': None,
  132. 'misago_agreement': {
  133. 'type': 'Terms of service',
  134. 'title': 'Terms of service',
  135. 'link': 'http://test.com',
  136. 'text': None,
  137. }
  138. })
  139. # set misago view too
  140. agreement.text = 'Lorem ipsum'
  141. agreement.save()
  142. context_dict = legal_links(MockRequest(self.user))
  143. self.assertEqual(context_dict, {
  144. 'TERMS_OF_SERVICE_ID': agreement.id,
  145. 'TERMS_OF_SERVICE_URL': 'http://test.com',
  146. 'PRIVACY_POLICY_ID': None,
  147. 'PRIVACY_POLICY_URL': None,
  148. 'misago_agreement': {
  149. 'type': 'Terms of service',
  150. 'title': 'Terms of service',
  151. 'link': 'http://test.com',
  152. 'text': '<p>Lorem ipsum</p>',
  153. },
  154. })