From 4d524b21d0826c9d3f6752ddbb1845efce12a12d Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 17 Jul 2018 13:06:58 +0200 Subject: [PATCH] adding worker with password mismatch doesn't crash system anymore --- smash/web/forms/worker_form.py | 2 +- smash/web/tests/forms/test_worker_forms.py | 82 ++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 smash/web/tests/forms/test_worker_forms.py diff --git a/smash/web/forms/worker_form.py b/smash/web/forms/worker_form.py index 1237b46b..37fa22d1 100644 --- a/smash/web/forms/worker_form.py +++ b/smash/web/forms/worker_form.py @@ -83,10 +83,10 @@ class WorkerForm(ModelForm): def clean(self): cleaned_data = super(WorkerForm, self).clean() if cleaned_data.get('password', None) is not None: + password = cleaned_data['password'] if cleaned_data['password'] != cleaned_data['password2']: self.add_error('password', "Password don't match") self.add_error('password2', "Password don't match") - password = cleaned_data['password'] min_length = 10 if len(password) < min_length: self.add_error('password', 'Password must be at least ' + str(min_length) + ' characters long.') diff --git a/smash/web/tests/forms/test_worker_forms.py b/smash/web/tests/forms/test_worker_forms.py new file mode 100644 index 00000000..90e18947 --- /dev/null +++ b/smash/web/tests/forms/test_worker_forms.py @@ -0,0 +1,82 @@ +import logging + +from web.models.worker_study_role import ROLE_CHOICES_TECHNICIAN +from web.models.constants import COUNTRY_OTHER_ID +from web.forms import WorkerForm +from web.tests import LoggedInWithWorkerTestCase + +logger = logging.getLogger(__name__) + + +class VoucherFormTests(LoggedInWithWorkerTestCase): + def setUp(self): + super(VoucherFormTests, self).setUp() + + def test_password_miss_match_on_create(self): + worker_data = VoucherFormTests.create_valid_worker_data() + worker_data["password"] = "test123456x" + worker_data["password2"] = "test123456y" + + worker_form = WorkerForm(data=worker_data) + + self.assertFalse(worker_form.is_valid()) + self.assertTrue("password2" in worker_form.errors) + + def test_password_to_short_on_create(self): + worker_data = VoucherFormTests.create_valid_worker_data() + worker_data["password"] = "x" + worker_data["password2"] = "x" + + worker_form = WorkerForm(data=worker_data) + + self.assertFalse(worker_form.is_valid()) + self.assertTrue("password" in worker_form.errors) + + def test_password_to_easy_on_create(self): + worker_data = VoucherFormTests.create_valid_worker_data() + worker_data["password"] = "xxxxxxxxxx" + worker_data["password2"] = "xxxxxxxxxx" + + worker_form = WorkerForm(data=worker_data) + + self.assertFalse(worker_form.is_valid()) + self.assertTrue("password" in worker_form.errors) + + def test_password_to_easy_on_create_2(self): + worker_data = VoucherFormTests.create_valid_worker_data() + worker_data["password"] = "2222222222" + worker_data["password2"] = "2222222222" + + worker_form = WorkerForm(data=worker_data) + + self.assertFalse(worker_form.is_valid()) + self.assertTrue("password" in worker_form.errors) + + def test_invalid_login_on_create(self): + worker_data = VoucherFormTests.create_valid_worker_data() + worker_data["login"] = "some login - bla" + + worker_form = WorkerForm(data=worker_data) + + self.assertFalse(worker_form.is_valid()) + self.assertTrue("login" in worker_form.errors) + + def test_valid_form(self): + worker_data = VoucherFormTests.create_valid_worker_data() + worker_form = WorkerForm(data=worker_data) + + worker_form.is_valid() + self.assertTrue(worker_form.is_valid()) + + @staticmethod + def create_valid_worker_data(): + form_data = { + "login": "test.login", + "password": "test123456", + "password2": "test123456", + "last_name": "Surname", + "first_name": "Given name", + "country": COUNTRY_OTHER_ID, + "role": ROLE_CHOICES_TECHNICIAN, + } + return form_data -- GitLab