Skip to content
Snippets Groups Projects
Commit e4f195ec authored by Carlos Vega's avatar Carlos Vega
Browse files

test confirmation of privacy notice

parent c5d4164a
No related branches found
No related tags found
1 merge request!276Resolve "privacy notice and usage terms"
Pipeline #34558 passed
from web.tests.functions import get_resource_path from web.tests.functions import get_resource_path, get_test_study
from web.models import PrivacyNotice from web.models import PrivacyNotice, Study, Worker
from web.forms import PrivacyNoticeForm from web.forms import PrivacyNoticeForm, WorkerAcceptPrivacyNoticeForm
from web.tests import LoggedInTestCase from web.tests import LoggedInTestCase
from django.urls import reverse from django.urls import reverse
from django.core.files.uploadedfile import SimpleUploadedFile from django.core.files.uploadedfile import SimpleUploadedFile
from django.contrib.messages import get_messages
from web.models.constants import GLOBAL_STUDY_ID
class PrivacyNoticeTests(LoggedInTestCase): class PrivacyNoticeTests(LoggedInTestCase):
def test_add_privacy_notice(self): def test_add_privacy_notice(self):
...@@ -45,7 +47,6 @@ class PrivacyNoticeTests(LoggedInTestCase): ...@@ -45,7 +47,6 @@ class PrivacyNoticeTests(LoggedInTestCase):
page = reverse('web.views.privacy_notice_edit', kwargs={'pk': pn.id}) page = reverse('web.views.privacy_notice_edit', kwargs={'pk': pn.id})
response = self.client.post(page, data={**form_data, **file_data}) response = self.client.post(page, data={**form_data, **file_data})
print(response)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
pn = PrivacyNotice.objects.all()[0] pn = PrivacyNotice.objects.all()[0]
self.assertEqual(pn.name, 'example2') self.assertEqual(pn.name, 'example2')
...@@ -58,4 +59,68 @@ class PrivacyNoticeTests(LoggedInTestCase): ...@@ -58,4 +59,68 @@ class PrivacyNoticeTests(LoggedInTestCase):
response = self.client.post(page) response = self.client.post(page)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(0, PrivacyNotice.objects.count()) self.assertEqual(0, PrivacyNotice.objects.count())
\ No newline at end of file def test_privacy_notice_middleware_superuser(self):
self.test_add_privacy_notice()
self.login_as_admin()
#assign privacy notice
pn = PrivacyNotice.objects.all()[0]
study = Study.objects.filter(id=GLOBAL_STUDY_ID)[0]
study.acceptance_of_study_privacy_notice_required = True
study.study_privacy_notice = pn
study.save()
study = Study.objects.filter(id=GLOBAL_STUDY_ID)[0]
self.assertEqual(study.acceptance_of_study_privacy_notice_required, True)
self.assertEqual(study.study_privacy_notice.id, pn.id)
self.login_as_super()
self.assertEqual(self.staff_worker.privacy_notice_accepted, False)
page = reverse('web.views.appointments')
response = self.client.get(page)
self.assertEqual(response.status_code, 200)
messages = list(get_messages(response.wsgi_request))
self.assertEqual(len(messages), 0)
def test_privacy_notice_middleware(self):
self.test_add_privacy_notice()
self.login_as_admin()
#assign privacy notice
pn = PrivacyNotice.objects.all()[0]
study = Study.objects.filter(id=GLOBAL_STUDY_ID)[0]
study.acceptance_of_study_privacy_notice_required = True
study.study_privacy_notice = pn
study.save()
study = Study.objects.filter(id=GLOBAL_STUDY_ID)[0]
self.assertEqual(study.acceptance_of_study_privacy_notice_required, True)
self.assertEqual(study.study_privacy_notice.id, pn.id)
self.login_as_staff()
self.assertEqual(self.staff_worker.privacy_notice_accepted, False)
page = reverse('web.views.appointments')
response = self.client.get(page)
self.assertEqual(response.status_code, 302)
messages = list(get_messages(response.wsgi_request))
self.assertEqual(len(messages), 1)
self.assertEqual(str(messages[0]), "You can't use the system until you accept the privacy notice.")
#accept privacy notice
form_data = dict(privacy_notice_accepted=True)
form = WorkerAcceptPrivacyNoticeForm(form_data)
self.assertTrue(form.is_valid())
page = reverse('web.views.accept_privacy_notice', kwargs={'pk': pn.id})
response = self.client.post(page, data={**form_data})
self.assertEqual(response.status_code, 302)
messages = [m.message for m in get_messages(response.wsgi_request)]
self.assertIn("Privacy notice accepted", messages)
#check acceptance
worker = Worker.objects.filter(id=self.staff_worker.id).first()
self.assertEqual(worker.privacy_notice_accepted, True)
page = reverse('web.views.appointments')
response = self.client.get(page)
self.assertEqual(response.status_code, 200)
messages = list(get_messages(response.wsgi_request))
worker = Worker.get_by_user(response.wsgi_request.user)
self.assertEqual(worker.privacy_notice_accepted, True)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment