diff --git a/HISTORY.rst b/HISTORY.rst index 5536dcedcc..5265912a6d 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -18,6 +18,7 @@ - Add support for workflow actions. - Add support for rendering workflows. - Add support for unbinding sub menus. +- Fix mailing profile test view. 2.6.4 (2017-07-26) ================== diff --git a/mayan/apps/mailer/tests/test_views.py b/mayan/apps/mailer/tests/test_views.py index 9f05fdd97d..effafc8fa1 100644 --- a/mayan/apps/mailer/tests/test_views.py +++ b/mayan/apps/mailer/tests/test_views.py @@ -2,9 +2,7 @@ from __future__ import unicode_literals from django.core import mail -from documents.tests.test_views import ( - GenericDocumentViewTestCase, GenericViewTestCase -) +from documents.tests.test_views import GenericDocumentViewTestCase from ..models import UserMailer from ..permissions import ( @@ -91,8 +89,6 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].to, [TEST_EMAIL_ADDRESS]) - -class UserMailerViewTestCase(MailerTestMixin, GenericViewTestCase): def _request_user_mailer_delete(self): return self.post( 'mailer:user_mailer_delete', args=(self.user_mailer.pk,) @@ -144,3 +140,34 @@ class UserMailerViewTestCase(MailerTestMixin, GenericViewTestCase): self.assertNotEqual( [UserMailer.objects.all()], [self.user_mailer] ) + + def _request_user_mailer_test(self): + return self.post( + 'mailer:user_mailer_test', args=(self.user_mailer.pk,), data={ + 'email': TEST_EMAIL_ADDRESS + }, follow=True + ) + + def test_user_mailer_test_view_no_permissions(self): + self._create_user_mailer() + self.login_user() + + response = self._request_user_mailer_test() + + self.assertEqual(response.status_code, 403) + + self.assertEqual(len(mail.outbox), 0) + + def test_user_mailer_test_view_with_access(self): + self._create_user_mailer() + self.login_user() + + self.grant_access( + obj=self.user_mailer, permission=permission_user_mailer_use + ) + + response = self._request_user_mailer_test() + + self.assertEqual(response.status_code, 200) + self.assertEqual(len(mail.outbox), 1) + self.assertEqual(mail.outbox[0].to, [TEST_EMAIL_ADDRESS]) diff --git a/mayan/apps/mailer/views.py b/mayan/apps/mailer/views.py index 7e0bdf4603..a829d3abeb 100644 --- a/mayan/apps/mailer/views.py +++ b/mayan/apps/mailer/views.py @@ -231,20 +231,21 @@ class UserMailerListView(SingleObjectListView): class UserMailerTestView(FormView): form_class = UserMailerTestForm + object_permission = permission_user_mailer_edit def form_valid(self, form): - self.get_user_mailer().test(to=(form.cleaned_data['email'],)) + self.get_object().test(to=form.cleaned_data['email']) return super(UserMailerTestView, self).form_valid(form=form) def get_extra_context(self): return { 'hide_object': True, - 'object': self.get_user_mailer(), + 'object': self.get_object(), 'submit_label': _('Test'), - 'title': _('Test mailing profile: %s') % self.get_user_mailer(), + 'title': _('Test mailing profile: %s') % self.get_object(), } - def get_user_mailer(self): + def get_object(self): user_mailer = get_object_or_404(UserMailer, pk=self.kwargs['pk']) AccessControlList.objects.check_access( permissions=permission_user_mailer_use, user=self.request.user,