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)
|
2.7.1 (2017-09-03)
|
||||||
==================
|
==================
|
||||||
- Support unicode in URL querystring. GitLab issue #423.
|
- 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
|
class_path = '' # Dot path to the actual class that will handle the mail
|
||||||
fields = ()
|
fields = {}
|
||||||
|
|
||||||
|
|
||||||
class MailerBackend(six.with_metaclass(MailerBackendMetaclass, MailerBackendBase)):
|
class MailerBackend(six.with_metaclass(MailerBackendMetaclass, MailerBackendBase)):
|
||||||
|
|||||||
@@ -105,9 +105,9 @@ class UserMailerDynamicForm(DynamicModelForm):
|
|||||||
# 'backend_data'.
|
# 'backend_data'.
|
||||||
backend_data = {}
|
backend_data = {}
|
||||||
|
|
||||||
for field in self.schema['fields']:
|
for field_name, field_data in self.schema['fields'].items():
|
||||||
backend_data[field['name']] = data.pop(
|
backend_data[field_name] = data.pop(
|
||||||
field['name'], field.get('default', None)
|
field_name, field_data.get('default', None)
|
||||||
)
|
)
|
||||||
|
|
||||||
data['backend_data'] = json.dumps(backend_data)
|
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_RECIPIENTS_MULTIPLE_MIXED_LIST = (
|
||||||
'test@example.com', 'test2@example.com', 'test2@example.com',
|
'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_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 ..models import UserMailer
|
||||||
from ..permissions import (
|
from ..permissions import (
|
||||||
permission_mailing_link, permission_mailing_send_document,
|
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 (
|
from .literals import (
|
||||||
TEST_EMAIL_ADDRESS, TEST_USER_MAILER_BACKEND_PATH, TEST_USER_MAILER_LABEL
|
TEST_EMAIL_ADDRESS, TEST_USER_MAILER_BACKEND_PATH, TEST_USER_MAILER_LABEL
|
||||||
)
|
)
|
||||||
|
from .mailers import TestBackend
|
||||||
|
|
||||||
|
|
||||||
class MailerTestMixin(object):
|
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):
|
def test_mail_link_view_no_permissions(self):
|
||||||
self._create_user_mailer()
|
self._create_user_mailer()
|
||||||
self.login_user()
|
self.login_user()
|
||||||
@@ -89,9 +114,50 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
|||||||
self.assertEqual(len(mail.outbox), 1)
|
self.assertEqual(len(mail.outbox), 1)
|
||||||
self.assertEqual(mail.outbox[0].to, [TEST_EMAIL_ADDRESS])
|
self.assertEqual(mail.outbox[0].to, [TEST_EMAIL_ADDRESS])
|
||||||
|
|
||||||
def _request_user_mailer_delete(self):
|
def test_user_mailer_create_view_no_permissions(self):
|
||||||
return self.post(
|
self.login_user()
|
||||||
'mailer:user_mailer_delete', args=(self.user_mailer.pk,)
|
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):
|
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
|
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):
|
def test_user_mailer_test_view_no_permissions(self):
|
||||||
self._create_user_mailer()
|
self._create_user_mailer()
|
||||||
self.login_user()
|
self.login_user()
|
||||||
|
|||||||
Reference in New Issue
Block a user