From 5cc86b47902380319204f513d0346bfcfb5e6ea4 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 22:18:16 +0200 Subject: [PATCH 1/8] change osusers.admin.UserCreationForm.save_m2m - replace pass with a doc string to explain why this method does nothing --- gnuviechadmin/osusers/admin.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnuviechadmin/osusers/admin.py b/gnuviechadmin/osusers/admin.py index 3a23b82..fb21576 100644 --- a/gnuviechadmin/osusers/admin.py +++ b/gnuviechadmin/osusers/admin.py @@ -84,7 +84,10 @@ class UserCreationForm(forms.ModelForm): return user def save_m2m(self): - pass + """ + No additional groups are created when this form is saved, so this + method just does nothing. + """ class UserAdmin(admin.ModelAdmin): From 3db6b99a002737ad18d45ae84ed927d577c15a24 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 22:20:28 +0200 Subject: [PATCH 2/8] add osuser.tests.test_admin.UserCreationFormTest --- gnuviechadmin/osusers/tests/test_admin.py | 37 ++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) 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) From 09f72fc0918507190d108e6aa85bbb20db034fd8 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 22:37:43 +0200 Subject: [PATCH 3/8] add osusers.tests.test_admin.UserAdminTest --- gnuviechadmin/osusers/tests/test_admin.py | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/gnuviechadmin/osusers/tests/test_admin.py b/gnuviechadmin/osusers/tests/test_admin.py index 41a3867..ac8f10d 100644 --- a/gnuviechadmin/osusers/tests/test_admin.py +++ b/gnuviechadmin/osusers/tests/test_admin.py @@ -10,6 +10,7 @@ from osusers.models import ( ) from osusers.admin import ( PASSWORD_MISMATCH_ERROR, + UserAdmin, UserCreationForm, UserTaskResultInline, ) @@ -64,3 +65,45 @@ class UserCreationFormTest(TestCase): user = form.save() self.assertIsNotNone(user) self.assertEqual(User.objects.get(pk=user.uid), user) + + +class UserAdminTest(TestCase): + def setUp(self): + site = AdminSite() + self.uadmin = UserAdmin(User, site) + super(UserAdminTest, self).setUp() + + def test_get_form_without_object(self): + form = self.uadmin.get_form(Mock(name='request')) + self.assertEqual( + form.Meta.fields, + ['password1', 'password2'] + ) + + @override_settings( + CELERY_ALWAYS_EAGER=True, + CELERY_CACHE_BACKEND='memory', + BROKER_BACKEND='memory' + ) + def test_get_form_with_object(self): + user = User.objects.create_user() + form = self.uadmin.get_form(Mock(name='request'), user) + self.assertEqual( + form.Meta.fields, + ['username', 'group', 'gecos', 'homedir', 'shell', 'uid'] + ) + + def test_get_inline_instances_without_object(self): + inlines = self.uadmin.get_inline_instances(Mock(name='request')) + self.assertEqual(inlines, []) + + @override_settings( + CELERY_ALWAYS_EAGER=True, + CELERY_CACHE_BACKEND='memory', + BROKER_BACKEND='memory' + ) + def test_get_inline_instances_with_object(self): + user = User.objects.create_user() + inlines = self.uadmin.get_inline_instances( + Mock(name='request'), user) + self.assertEqual(len(inlines), len(UserAdmin.inlines)) From 338b575983f6e9a3d62c73fb4f8adf9caf37d85b Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 22:53:29 +0200 Subject: [PATCH 4/8] add type check --- gnuviechadmin/osusers/tests/test_admin.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnuviechadmin/osusers/tests/test_admin.py b/gnuviechadmin/osusers/tests/test_admin.py index ac8f10d..87d0c10 100644 --- a/gnuviechadmin/osusers/tests/test_admin.py +++ b/gnuviechadmin/osusers/tests/test_admin.py @@ -107,3 +107,5 @@ class UserAdminTest(TestCase): inlines = self.uadmin.get_inline_instances( Mock(name='request'), user) self.assertEqual(len(inlines), len(UserAdmin.inlines)) + for index in range(len(inlines)): + self.assertIsInstance(inlines[index], UserAdmin.inlines[index]) From 266794d4475ae1651eb2edaa35a74bc962f376e2 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 22:53:38 +0200 Subject: [PATCH 5/8] add osusers.tests.test_admin.GroupAdminTest --- gnuviechadmin/osusers/tests/test_admin.py | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnuviechadmin/osusers/tests/test_admin.py b/gnuviechadmin/osusers/tests/test_admin.py index 87d0c10..1b80d13 100644 --- a/gnuviechadmin/osusers/tests/test_admin.py +++ b/gnuviechadmin/osusers/tests/test_admin.py @@ -6,9 +6,11 @@ from django.test.utils import override_settings from mock import patch, Mock from osusers.models import ( + Group, User, ) from osusers.admin import ( + GroupAdmin, PASSWORD_MISMATCH_ERROR, UserAdmin, UserCreationForm, @@ -109,3 +111,27 @@ class UserAdminTest(TestCase): self.assertEqual(len(inlines), len(UserAdmin.inlines)) for index in range(len(inlines)): self.assertIsInstance(inlines[index], UserAdmin.inlines[index]) + + +class GroupAdminTest(TestCase): + def setUp(self): + site = AdminSite() + self.gadmin = GroupAdmin(Group, site) + super(GroupAdminTest, self).setUp() + + def test_get_inline_instances_without_object(self): + inlines = self.gadmin.get_inline_instances(Mock(name='request')) + self.assertEqual(inlines, []) + + @override_settings( + CELERY_ALWAYS_EAGER=True, + CELERY_CACHE_BACKEND='memory', + BROKER_BACKEND='memory' + ) + def test_get_inline_instances_with_object(self): + group = Group.objects.create(gid=1000, groupname='test') + inlines = self.gadmin.get_inline_instances( + Mock(name='request'), group) + self.assertEqual(len(inlines), len(GroupAdmin.inlines)) + for index in range(len(inlines)): + self.assertIsInstance(inlines[index], GroupAdmin.inlines[index]) From 6b36cc95ff35c548f5a210575e386336d0e25fc7 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 23:05:28 +0200 Subject: [PATCH 6/8] really test that update_taskstatus is called --- gnuviechadmin/osusers/tests/test_admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnuviechadmin/osusers/tests/test_admin.py b/gnuviechadmin/osusers/tests/test_admin.py index 1b80d13..fe2faaa 100644 --- a/gnuviechadmin/osusers/tests/test_admin.py +++ b/gnuviechadmin/osusers/tests/test_admin.py @@ -29,7 +29,7 @@ class TaskResultInlineTest(TestCase): mock.return_value = [entrymock] requestmock = Mock(name='request') UserTaskResultInline(User, self.site).get_queryset(requestmock) - entrymock.assert_calledwith() + entrymock.update_taskstatus.assert_calledwith() def test_has_add_permissions_returns_false(self): self.assertFalse( From 0a48619f3c6ea0db9921f4e1e4b8192b36b14349 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 23:05:58 +0200 Subject: [PATCH 7/8] implement osusers.tests.test_admin.DeleteTaskResultAdminTest --- gnuviechadmin/osusers/tests/test_admin.py | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnuviechadmin/osusers/tests/test_admin.py b/gnuviechadmin/osusers/tests/test_admin.py index fe2faaa..12091ba 100644 --- a/gnuviechadmin/osusers/tests/test_admin.py +++ b/gnuviechadmin/osusers/tests/test_admin.py @@ -6,10 +6,12 @@ from django.test.utils import override_settings from mock import patch, Mock from osusers.models import ( + DeleteTaskResult, Group, User, ) from osusers.admin import ( + DeleteTaskResultAdmin, GroupAdmin, PASSWORD_MISMATCH_ERROR, UserAdmin, @@ -135,3 +137,27 @@ class GroupAdminTest(TestCase): self.assertEqual(len(inlines), len(GroupAdmin.inlines)) for index in range(len(inlines)): self.assertIsInstance(inlines[index], GroupAdmin.inlines[index]) + + +class DeleteTaskResultAdminTest(TestCase): + def setUp(self): + site = AdminSite() + self.dtradmin = DeleteTaskResultAdmin(DeleteTaskResult, site) + super(DeleteTaskResultAdminTest, self).setUp() + + def test_has_add_permission_returns_false_without_object(self): + self.assertFalse( + self.dtradmin.has_add_permission(Mock(name='request'))) + + def test_has_add_permission_returns_false_with_object(self): + self.assertFalse( + self.dtradmin.has_add_permission(Mock(name='request'), + Mock(name='test'))) + + def test_get_queryset_calls_update_taskstatus(self): + with patch('osusers.admin.admin.ModelAdmin.get_queryset') as mock: + entrymock = Mock(name='entry') + mock.return_value = [entrymock] + requestmock = Mock(name='request') + self.dtradmin.get_queryset(requestmock) + entrymock.update_taskstatus.assert_calledwith() From fa5f296c0f25a2eac64cf53675380481ad53abe5 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 1 Jun 2014 23:10:26 +0200 Subject: [PATCH 8/8] add test for UserCreationForm.save_m2m --- gnuviechadmin/osusers/tests/test_admin.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnuviechadmin/osusers/tests/test_admin.py b/gnuviechadmin/osusers/tests/test_admin.py index 12091ba..cf75a5a 100644 --- a/gnuviechadmin/osusers/tests/test_admin.py +++ b/gnuviechadmin/osusers/tests/test_admin.py @@ -70,6 +70,10 @@ class UserCreationFormTest(TestCase): self.assertIsNotNone(user) self.assertEqual(User.objects.get(pk=user.uid), user) + def test_save_m2m_returns_none(self): + form = UserCreationForm() + self.assertIsNone(form.save_m2m()) + class UserAdminTest(TestCase): def setUp(self):