test_context_processors.py 6.3 KB

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