From d4446b6b36f186446ae14415d9c4f7625edff387 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 8 Jan 2018 18:00:37 +0100
Subject: [PATCH] unit test showing security issue

---
 smash/web/tests/view/test_doctor.py | 34 +++++++++++++++++++++++------
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/smash/web/tests/view/test_doctor.py b/smash/web/tests/view/test_doctor.py
index 5689a186..dbcbd3d3 100644
--- a/smash/web/tests/view/test_doctor.py
+++ b/smash/web/tests/view/test_doctor.py
@@ -30,6 +30,32 @@ class DoctorViewTests(LoggedInTestCase):
         location = create_location()
         count = Worker.objects.all().count()
 
+        form_data = self.create_add_worker_form_data(language, location)
+
+        response = self.client.post(reverse('web.views.doctor_add'), data=form_data)
+
+        self.assertEqual(response.status_code, 302)
+
+        new_count = Worker.objects.all().count()
+        self.assertEqual(count + 1, new_count)
+
+    def test_security_in_worker_added_request(self):
+        self.client.logout()
+
+        language = create_language()
+        location = create_location()
+        count = Worker.objects.all().count()
+
+        form_data = self.create_add_worker_form_data(language, location)
+
+        self.client.post(reverse('web.views.doctor_add'), data=form_data)
+
+        new_count = Worker.objects.all().count()
+        # new user shouldn't be added
+        self.assertEqual(count, new_count)
+
+    @staticmethod
+    def create_add_worker_form_data(language, location):
         form = WorkerAddForm()
         form_data = {}
         for key, value in form.initial.items():
@@ -44,13 +70,7 @@ class DoctorViewTests(LoggedInTestCase):
         form_data["specialization"] = "tester"
         form_data["languages"] = [language.id]
         form_data["locations"] = [location.id]
-
-        response = self.client.post(reverse('web.views.doctor_add'), data=form_data)
-
-        self.assertEqual(response.status_code, 302)
-
-        new_count = Worker.objects.all().count()
-        self.assertEqual(count + 1, new_count)
+        return form_data
 
     def test_render_edit_worker_request(self):
         worker = create_worker()
-- 
GitLab