diff --git a/smash/web/tests/view/test_privacy_notice.py b/smash/web/tests/view/test_privacy_notice.py
index 5d21c1d42df6c6d883a165aadc780a313c787eb4..609d46b55efc863445b80abf758a195bb08642aa 100644
--- a/smash/web/tests/view/test_privacy_notice.py
+++ b/smash/web/tests/view/test_privacy_notice.py
@@ -1,9 +1,11 @@
-from web.tests.functions import get_resource_path
-from web.models import PrivacyNotice
-from web.forms import PrivacyNoticeForm
+from web.tests.functions import get_resource_path, get_test_study
+from web.models import PrivacyNotice, Study, Worker
+from web.forms import PrivacyNoticeForm, WorkerAcceptPrivacyNoticeForm
 from web.tests import LoggedInTestCase
 from django.urls import reverse
 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):
     def test_add_privacy_notice(self):
@@ -45,7 +47,6 @@ class PrivacyNoticeTests(LoggedInTestCase):
 
         page = reverse('web.views.privacy_notice_edit', kwargs={'pk': pn.id})
         response = self.client.post(page, data={**form_data, **file_data})
-        print(response)
         self.assertEqual(response.status_code, 302)
         pn = PrivacyNotice.objects.all()[0]
         self.assertEqual(pn.name, 'example2')
@@ -58,4 +59,68 @@ class PrivacyNoticeTests(LoggedInTestCase):
         response = self.client.post(page)
         self.assertEqual(response.status_code, 302)
         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)