diff --git a/gnuviechadmin/osusers/tests/test_admin.py b/gnuviechadmin/osusers/tests/test_admin.py index fa1a524..41a3867 100644 --- a/gnuviechadmin/osusers/tests/test_admin.py +++ b/gnuviechadmin/osusers/tests/test_admin.py @@ -1,5 +1,7 @@ -from django.test import TestCase +from django import forms from django.contrib.admin import AdminSite +from django.test import TestCase +from django.test.utils import override_settings from mock import patch, Mock @@ -7,6 +9,8 @@ from osusers.models import ( User, ) from osusers.admin import ( + PASSWORD_MISMATCH_ERROR, + UserCreationForm, UserTaskResultInline, ) @@ -29,3 +33,34 @@ class TaskResultInlineTest(TestCase): UserTaskResultInline(User, self.site).has_add_permission( self, Mock(name='request')) ) + + +class UserCreationFormTest(TestCase): + def test_clean_password2_same(self): + form = UserCreationForm() + form.cleaned_data = {'password1': 'secret', 'password2': 'secret'} + self.assertEqual(form.clean_password2(), 'secret') + + def test_clean_password2_empty(self): + form = UserCreationForm() + form.cleaned_data = {} + self.assertIsNone(form.clean_password2()) + + def test_clean_password2_mismatch(self): + form = UserCreationForm() + form.cleaned_data = {'password1': 'secretx', 'password2': 'secrety'} + with self.assertRaises(forms.ValidationError) as cm: + form.clean_password2() + self.assertEqual(cm.exception.message, PASSWORD_MISMATCH_ERROR) + + @override_settings( + CELERY_ALWAYS_EAGER=True, + CELERY_CACHE_BACKEND='memory', + BROKER_BACKEND='memory' + ) + def test_save_commit(self): + form = UserCreationForm() + form.cleaned_data = {'password1': 'secret', 'password2': 'secret'} + user = form.save() + self.assertIsNotNone(user) + self.assertEqual(User.objects.get(pk=user.uid), user)