from django.urls import reverse from misago.legal.context_processors import legal_links from misago.legal.models import Agreement from misago.users.testutils import AuthenticatedUserTestCase class MockRequest(object): def __init__(self, user): self.user = user self.frontend_context = {} def get_host(self): return 'testhost.com' class PrivacyPolicyTests(AuthenticatedUserTestCase): def setUp(self): super(PrivacyPolicyTests, self).setUp() Agreement.objects.invalidate_cache() def tearDown(self): Agreement.objects.invalidate_cache() def test_context_processor_no_policy(self): """context processor has no TOS link""" context_dict = legal_links(MockRequest(self.user)) self.assertEqual(context_dict, { 'TERMS_OF_SERVICE_ID': None, 'TERMS_OF_SERVICE_URL': None, 'PRIVACY_POLICY_ID': None, 'PRIVACY_POLICY_URL': None, 'misago_agreement': None, }) def test_context_processor_misago_policy(self): """context processor has TOS link to Misago view""" agreement = Agreement.objects.create( type=Agreement.TYPE_PRIVACY, text='Lorem ipsum', is_active=True, ) context_dict = legal_links(MockRequest(self.user)) self.assertEqual(context_dict, { 'TERMS_OF_SERVICE_ID': None, 'TERMS_OF_SERVICE_URL': None, 'PRIVACY_POLICY_ID': agreement.id, 'PRIVACY_POLICY_URL': reverse('misago:privacy-policy'), 'misago_agreement': { 'type': 'Privacy policy', 'title': 'Privacy policy', 'link': None, 'text': '
Lorem ipsum
', }, }) def test_context_processor_remote_policy(self): """context processor has TOS link to remote url""" agreement = Agreement.objects.create( type=Agreement.TYPE_PRIVACY, link='http://test.com', is_active=True, ) context_dict = legal_links(MockRequest(self.user)) self.assertEqual(context_dict, { 'TERMS_OF_SERVICE_ID': None, 'TERMS_OF_SERVICE_URL': None, 'PRIVACY_POLICY_ID': agreement.id, 'PRIVACY_POLICY_URL': 'http://test.com', 'misago_agreement': { 'type': 'Privacy policy', 'title': 'Privacy policy', 'link': 'http://test.com', 'text': None, }, }) # set misago view too agreement.text = 'Lorem ipsum' agreement.save() context_dict = legal_links(MockRequest(self.user)) self.assertEqual(context_dict, { 'TERMS_OF_SERVICE_ID': None, 'TERMS_OF_SERVICE_URL': None, 'PRIVACY_POLICY_ID': agreement.id, 'PRIVACY_POLICY_URL': 'http://test.com', 'misago_agreement': { 'type': 'Privacy policy', 'title': 'Privacy policy', 'link': 'http://test.com', 'text': 'Lorem ipsum
', }, }) class TermsOfServiceTests(AuthenticatedUserTestCase): def setUp(self): super(TermsOfServiceTests, self).setUp() Agreement.objects.invalidate_cache() def tearDown(self): Agreement.objects.invalidate_cache() def test_context_processor_no_tos(self): """context processor has no TOS link""" context_dict = legal_links(MockRequest(self.user)) self.assertEqual(context_dict, { 'TERMS_OF_SERVICE_ID': None, 'TERMS_OF_SERVICE_URL': None, 'PRIVACY_POLICY_ID': None, 'PRIVACY_POLICY_URL': None, 'misago_agreement': None, }) def test_context_processor_misago_tos(self): """context processor has TOS link to Misago view""" agreement = Agreement.objects.create( type=Agreement.TYPE_TOS, text='Lorem ipsum', is_active=True, ) context_dict = legal_links(MockRequest(self.user)) self.assertEqual(context_dict, { 'TERMS_OF_SERVICE_ID': agreement.id, 'TERMS_OF_SERVICE_URL': reverse('misago:terms-of-service'), 'PRIVACY_POLICY_ID': None, 'PRIVACY_POLICY_URL': None, 'misago_agreement': { 'type': 'Terms of service', 'title': 'Terms of service', 'link': None, 'text': 'Lorem ipsum
', } }) def test_context_processor_remote_tos(self): """context processor has TOS link to remote url""" agreement = Agreement.objects.create( type=Agreement.TYPE_TOS, link='http://test.com', is_active=True, ) context_dict = legal_links(MockRequest(self.user)) self.assertEqual(context_dict, { 'TERMS_OF_SERVICE_ID': agreement.id, 'TERMS_OF_SERVICE_URL': 'http://test.com', 'PRIVACY_POLICY_ID': None, 'PRIVACY_POLICY_URL': None, 'misago_agreement': { 'type': 'Terms of service', 'title': 'Terms of service', 'link': 'http://test.com', 'text': None, } }) # set misago view too agreement.text = 'Lorem ipsum' agreement.save() context_dict = legal_links(MockRequest(self.user)) self.assertEqual(context_dict, { 'TERMS_OF_SERVICE_ID': agreement.id, 'TERMS_OF_SERVICE_URL': 'http://test.com', 'PRIVACY_POLICY_ID': None, 'PRIVACY_POLICY_URL': None, 'misago_agreement': { 'type': 'Terms of service', 'title': 'Terms of service', 'link': 'http://test.com', 'text': 'Lorem ipsum
', }, })