tests.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. from django.test import TestCase
  2. from django.urls import reverse
  3. from misago.conf import settings
  4. from .context_processors import legal_links
  5. class MockRequest(object):
  6. def __init__(self):
  7. self.frontend_context = {'url': {}}
  8. class PrivacyPolicyTests(TestCase):
  9. def tearDown(self):
  10. settings.reset_settings()
  11. def test_404_on_no_policy(self):
  12. """policy view returns 404 when no policy is set"""
  13. self.assertFalse(settings.privacy_policy_link)
  14. self.assertFalse(settings.privacy_policy)
  15. response = self.client.get(reverse('misago:privacy-policy'))
  16. self.assertEqual(response.status_code, 404)
  17. def test_301_on_link_policy(self):
  18. """policy view returns 302 redirect when link is set"""
  19. settings.override_setting('privacy_policy_link', 'http://test.com')
  20. settings.override_setting('privacy_policy', 'Lorem ipsum')
  21. self.assertTrue(settings.privacy_policy_link)
  22. self.assertTrue(settings.privacy_policy)
  23. response = self.client.get(reverse('misago:privacy-policy'))
  24. self.assertEqual(response.status_code, 302)
  25. self.assertEqual(response['location'], 'http://test.com')
  26. def test_200_on_link_policy(self):
  27. """policy view returns 200 when custom tos content is set"""
  28. settings.override_setting('privacy_policy_title', 'Test Policy')
  29. settings.override_setting('privacy_policy', 'Lorem ipsum dolor')
  30. self.assertTrue(settings.privacy_policy_title)
  31. self.assertTrue(settings.privacy_policy)
  32. response = self.client.get(reverse('misago:privacy-policy'))
  33. self.assertEqual(response.status_code, 200)
  34. self.assertContains(response, 'Test Policy')
  35. self.assertContains(response, 'Lorem ipsum dolor')
  36. def test_context_processor_no_policy(self):
  37. """context processor has no privacy policy link"""
  38. request = MockRequest()
  39. context_dict = legal_links(request)
  40. self.assertEqual(context_dict, {
  41. 'privacy_policy': None,
  42. 'terms_of_service': None,
  43. })
  44. self.assertEqual(request.frontend_context['url'], {})
  45. def test_context_processor_misago_policy(self):
  46. """context processor has TOS link to Misago view"""
  47. request = MockRequest()
  48. settings.override_setting('privacy_policy', 'Lorem ipsum')
  49. context_dict = legal_links(request)
  50. self.assertEqual(context_dict, {
  51. 'privacy_policy': 'Lorem ipsum',
  52. 'terms_of_service': None,
  53. })
  54. self.assertEqual(request.frontend_context['url'], {
  55. 'privacy_policy': reverse('misago:privacy-policy'),
  56. })
  57. def test_context_processor_remote_policy(self):
  58. """context processor has TOS link to remote url"""
  59. request = MockRequest()
  60. settings.override_setting('privacy_policy_link', 'http://test.com')
  61. context_dict = legal_links(request)
  62. self.assertEqual(context_dict, {
  63. 'privacy_policy': 'http://test.com',
  64. 'terms_of_service': None,
  65. })
  66. self.assertEqual(request.frontend_context['url'], {
  67. 'privacy_policy': 'http://test.com',
  68. })
  69. # set misago view too
  70. settings.override_setting('privacy_policy', 'Lorem ipsum')
  71. context_dict = legal_links(request)
  72. self.assertEqual(context_dict, {
  73. 'privacy_policy': 'http://test.com',
  74. 'terms_of_service': None,
  75. })
  76. self.assertEqual(request.frontend_context['url'], {
  77. 'privacy_policy': 'http://test.com',
  78. })
  79. class TermsOfServiceTests(TestCase):
  80. def tearDown(self):
  81. settings.reset_settings()
  82. def test_404_on_no_tos(self):
  83. """TOS view returns 404 when no TOS is set"""
  84. self.assertFalse(settings.terms_of_service_link)
  85. self.assertFalse(settings.terms_of_service)
  86. response = self.client.get(reverse('misago:terms-of-service'))
  87. self.assertEqual(response.status_code, 404)
  88. def test_301_on_link_tos(self):
  89. """TOS view returns 302 redirect when link is set"""
  90. settings.override_setting('terms_of_service_link', 'http://test.com')
  91. settings.override_setting('terms_of_service', 'Lorem ipsum')
  92. self.assertTrue(settings.terms_of_service_link)
  93. self.assertTrue(settings.terms_of_service)
  94. response = self.client.get(reverse('misago:terms-of-service'))
  95. self.assertEqual(response.status_code, 302)
  96. self.assertEqual(response['location'], 'http://test.com')
  97. def test_200_on_link_tos(self):
  98. """TOS view returns 200 when custom tos content is set"""
  99. settings.override_setting('terms_of_service_title', 'Test ToS')
  100. settings.override_setting('terms_of_service', 'Lorem ipsum dolor')
  101. self.assertTrue(settings.terms_of_service_title)
  102. self.assertTrue(settings.terms_of_service)
  103. response = self.client.get(reverse('misago:terms-of-service'))
  104. self.assertEqual(response.status_code, 200)
  105. self.assertContains(response, 'Test ToS')
  106. self.assertContains(response, 'Lorem ipsum dolor')
  107. def test_context_processor_no_tos(self):
  108. """context processor has no TOS link"""
  109. request = MockRequest()
  110. context_dict = legal_links(request)
  111. self.assertEqual(context_dict, {
  112. 'privacy_policy': None,
  113. 'terms_of_service': None,
  114. })
  115. self.assertEqual(request.frontend_context['url'], {})
  116. def test_context_processor_misago_tos(self):
  117. """context processor has TOS link to Misago view"""
  118. request = MockRequest()
  119. settings.override_setting('terms_of_service', 'Lorem ipsum')
  120. context_dict = legal_links(request)
  121. self.assertEqual(context_dict, {
  122. 'privacy_policy': None,
  123. 'terms_of_service': 'Lorem ipsum',
  124. })
  125. self.assertEqual(
  126. request.frontend_context['url'], {
  127. 'tos': reverse('misago:terms-of-service'),
  128. }
  129. )
  130. def test_context_processor_remote_tos(self):
  131. """context processor has TOS link to remote url"""
  132. request = MockRequest()
  133. settings.override_setting('terms_of_service_link', 'http://test.com')
  134. context_dict = legal_links(request)
  135. self.assertEqual(context_dict, {
  136. 'privacy_policy': None,
  137. 'terms_of_service': 'http://test.com',
  138. })
  139. self.assertEqual(request.frontend_context['url'], {
  140. 'tos': 'http://test.com',
  141. })
  142. # set misago view too
  143. settings.override_setting('terms_of_service', 'Lorem ipsum')
  144. context_dict = legal_links(request)
  145. self.assertEqual(context_dict, {
  146. 'privacy_policy': None,
  147. 'terms_of_service': 'http://test.com',
  148. })
  149. self.assertEqual(request.frontend_context['url'], {
  150. 'tos': 'http://test.com',
  151. })