Fix new mailer creation view. GitLab issue #431.
Thanks to Robert Schöftner (@robert.schoeftner) for the report and the solution. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2.7.2 (2017-09-XX)
|
||||
==================
|
||||
- Fix new mailer creation view. GitLab issue #431.
|
||||
Thanks to Robert Schöftner (@robert.schoeftner) for the
|
||||
report and the solution.
|
||||
|
||||
2.7.1 (2017-09-03)
|
||||
==================
|
||||
- Support unicode in URL querystring. GitLab issue #423.
|
||||
|
||||
@@ -46,7 +46,7 @@ class MailerBackendBase(object):
|
||||
|
||||
"""
|
||||
class_path = '' # Dot path to the actual class that will handle the mail
|
||||
fields = ()
|
||||
fields = {}
|
||||
|
||||
|
||||
class MailerBackend(six.with_metaclass(MailerBackendMetaclass, MailerBackendBase)):
|
||||
|
||||
@@ -105,9 +105,9 @@ class UserMailerDynamicForm(DynamicModelForm):
|
||||
# 'backend_data'.
|
||||
backend_data = {}
|
||||
|
||||
for field in self.schema['fields']:
|
||||
backend_data[field['name']] = data.pop(
|
||||
field['name'], field.get('default', None)
|
||||
for field_name, field_data in self.schema['fields'].items():
|
||||
backend_data[field_name] = data.pop(
|
||||
field_name, field_data.get('default', None)
|
||||
)
|
||||
|
||||
data['backend_data'] = json.dumps(backend_data)
|
||||
|
||||
@@ -7,5 +7,5 @@ TEST_RECIPIENTS_MULTIPLE_MIXED = 'test@example.com,test2@example.com;test2@examp
|
||||
TEST_RECIPIENTS_MULTIPLE_MIXED_LIST = (
|
||||
'test@example.com', 'test2@example.com', 'test2@example.com',
|
||||
)
|
||||
TEST_USER_MAILER_LABEL = 'test user mailer label'
|
||||
TEST_USER_MAILER_BACKEND_PATH = 'mailer.tests.mailers.TestBackend'
|
||||
TEST_USER_MAILER_LABEL = 'test user mailer label'
|
||||
|
||||
@@ -7,12 +7,14 @@ from documents.tests.test_views import GenericDocumentViewTestCase
|
||||
from ..models import UserMailer
|
||||
from ..permissions import (
|
||||
permission_mailing_link, permission_mailing_send_document,
|
||||
permission_user_mailer_use, permission_user_mailer_view
|
||||
permission_user_mailer_create, permission_user_mailer_use,
|
||||
permission_user_mailer_view
|
||||
)
|
||||
|
||||
from .literals import (
|
||||
TEST_EMAIL_ADDRESS, TEST_USER_MAILER_BACKEND_PATH, TEST_USER_MAILER_LABEL
|
||||
)
|
||||
from .mailers import TestBackend
|
||||
|
||||
|
||||
class MailerTestMixin(object):
|
||||
@@ -46,6 +48,29 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
},
|
||||
)
|
||||
|
||||
def _request_user_mailer_create(self):
|
||||
return self.post(
|
||||
'mailer:user_mailer_create', args=(
|
||||
TEST_USER_MAILER_BACKEND_PATH,
|
||||
), data={
|
||||
'default': True,
|
||||
'enabled': True,
|
||||
'label': TEST_USER_MAILER_LABEL,
|
||||
}, follow=True
|
||||
)
|
||||
|
||||
def _request_user_mailer_delete(self):
|
||||
return self.post(
|
||||
'mailer:user_mailer_delete', args=(self.user_mailer.pk,)
|
||||
)
|
||||
|
||||
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_mail_link_view_no_permissions(self):
|
||||
self._create_user_mailer()
|
||||
self.login_user()
|
||||
@@ -89,9 +114,50 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
self.assertEqual(len(mail.outbox), 1)
|
||||
self.assertEqual(mail.outbox[0].to, [TEST_EMAIL_ADDRESS])
|
||||
|
||||
def _request_user_mailer_delete(self):
|
||||
return self.post(
|
||||
'mailer:user_mailer_delete', args=(self.user_mailer.pk,)
|
||||
def test_user_mailer_create_view_no_permissions(self):
|
||||
self.login_user()
|
||||
self.grant_permission(permission=permission_user_mailer_view)
|
||||
|
||||
response = self._request_user_mailer_create()
|
||||
|
||||
self.assertNotContains(
|
||||
response, text=TestBackend.label, status_code=403
|
||||
)
|
||||
self.assertEqual(UserMailer.objects.count(), 0)
|
||||
|
||||
def test_user_mailer_create_view_with_permissions(self):
|
||||
self.login_user()
|
||||
self.grant_permission(permission=permission_user_mailer_create)
|
||||
self.grant_permission(permission=permission_user_mailer_view)
|
||||
|
||||
response = self._request_user_mailer_create()
|
||||
|
||||
self.assertContains(
|
||||
response, text=TestBackend.label, status_code=200
|
||||
)
|
||||
|
||||
self.assertEqual(UserMailer.objects.count(), 1)
|
||||
|
||||
def test_user_mailer_delete_view_no_permissions(self):
|
||||
self._create_user_mailer()
|
||||
self.login_user()
|
||||
|
||||
self._request_user_mailer_delete()
|
||||
|
||||
self.assertQuerysetEqual(
|
||||
UserMailer.objects.all(), (repr(self.user_mailer),)
|
||||
)
|
||||
|
||||
def test_user_mailer_delete_view_with_permissions(self):
|
||||
self._create_user_mailer()
|
||||
self.login_user()
|
||||
|
||||
self.grant_permission(permission=permission_user_mailer_view)
|
||||
|
||||
self._request_user_mailer_delete()
|
||||
|
||||
self.assertNotEqual(
|
||||
[UserMailer.objects.all()], [self.user_mailer]
|
||||
)
|
||||
|
||||
def test_user_mailer_list_view_no_permissions(self):
|
||||
@@ -119,35 +185,6 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
response, text=self.user_mailer.label, status_code=200
|
||||
)
|
||||
|
||||
def test_user_mailer_delete_view_no_permissions(self):
|
||||
self._create_user_mailer()
|
||||
self.login_user()
|
||||
|
||||
self._request_user_mailer_delete()
|
||||
|
||||
self.assertQuerysetEqual(
|
||||
UserMailer.objects.all(), (repr(self.user_mailer),)
|
||||
)
|
||||
|
||||
def test_user_mailer_delete_view_with_permissions(self):
|
||||
self._create_user_mailer()
|
||||
self.login_user()
|
||||
|
||||
self.grant_permission(permission=permission_user_mailer_view)
|
||||
|
||||
self._request_user_mailer_delete()
|
||||
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user