Add tests for managemails.views
This commit adds a test suite for the views defined in managemails.views. One issue discovered when writing tests is fixed by checking the request method in CreateMailbox.dispatch.
This commit is contained in:
parent
6533205479
commit
30600ce107
2 changed files with 666 additions and 4 deletions
|
@ -0,0 +1,661 @@
|
||||||
|
"""
|
||||||
|
Tests for :py:mod:`managemails.views`.
|
||||||
|
|
||||||
|
"""
|
||||||
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
|
try:
|
||||||
|
from unittest.mock import patch, MagicMock
|
||||||
|
except ImportError:
|
||||||
|
from mock import patch, MagicMock
|
||||||
|
|
||||||
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.test import TestCase
|
||||||
|
from django.test.utils import override_settings
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
|
from domains.models import MailDomain
|
||||||
|
from hostingpackages.models import (
|
||||||
|
CustomerHostingPackage,
|
||||||
|
HostingPackageTemplate,
|
||||||
|
)
|
||||||
|
|
||||||
|
from managemails.forms import MAILBOX_OR_FORWARDS
|
||||||
|
from managemails.models import MailAddress, Mailbox
|
||||||
|
from managemails.views import (
|
||||||
|
AddMailAddress,
|
||||||
|
ChangeMailboxPassword,
|
||||||
|
CreateMailbox,
|
||||||
|
EditMailAddress,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
User = get_user_model()
|
||||||
|
|
||||||
|
TEST_USER = 'test'
|
||||||
|
TEST_PASSWORD = 'secret'
|
||||||
|
TEST_EMAIL = 'test@example.org'
|
||||||
|
TEST_NAME = 'Example Tester'.split()
|
||||||
|
|
||||||
|
|
||||||
|
class HostingPackageAwareTestMixin(object):
|
||||||
|
|
||||||
|
def _setup_hosting_package(self, customer, mailboxcount):
|
||||||
|
template = HostingPackageTemplate.objects.create(
|
||||||
|
name='testpackagetemplate', mailboxcount=mailboxcount,
|
||||||
|
diskspace=1, diskspace_unit=0)
|
||||||
|
package = CustomerHostingPackage.objects.create_from_template(
|
||||||
|
customer, template, 'testpackage')
|
||||||
|
with patch('hostingpackages.models.settings') as hmsettings:
|
||||||
|
hmsettings.OSUSER_DEFAULT_GROUPS = []
|
||||||
|
package.save()
|
||||||
|
return package
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
CELERY_ALWAYS_EAGER=True,
|
||||||
|
CELERY_CACHE_BACKEND='memory',
|
||||||
|
BROKER_BACKEND='memory'
|
||||||
|
)
|
||||||
|
class CreateMailboxTest(HostingPackageAwareTestMixin, TestCase):
|
||||||
|
|
||||||
|
def test_get_anonymous(self):
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('create_mailbox', kwargs={'package': 1}))
|
||||||
|
self.assertEqual(response.status_code, 404)
|
||||||
|
|
||||||
|
def test_get_regular_user(self):
|
||||||
|
customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
package = self._setup_hosting_package(customer, 1)
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('create_mailbox', kwargs={'package': package.pk}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_other_regular_user(self):
|
||||||
|
customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
User.objects.create_user(
|
||||||
|
'test2', email='test2@example.org', password=TEST_PASSWORD)
|
||||||
|
package = self._setup_hosting_package(customer, 1)
|
||||||
|
self.client.login(username='test2', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('create_mailbox', kwargs={'package': package.pk}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_staff_user(self):
|
||||||
|
customer = User.objects.create_user('customer')
|
||||||
|
package = self._setup_hosting_package(customer, 1)
|
||||||
|
User.objects.create_superuser(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('create_mailbox', kwargs={'package': package.pk}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_template(self):
|
||||||
|
customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
package = self._setup_hosting_package(customer, 1)
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('create_mailbox', kwargs={'package': package.pk}))
|
||||||
|
self.assertTemplateUsed(response, 'managemails/mailbox_create.html')
|
||||||
|
|
||||||
|
def test_get_no_more_mailboxes(self):
|
||||||
|
customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
package = self._setup_hosting_package(customer, 0)
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('create_mailbox', kwargs={'package': package.pk}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
self.assertEqual(
|
||||||
|
response.content,
|
||||||
|
'You are not allowed to add more mailboxes to this hosting'
|
||||||
|
' package')
|
||||||
|
|
||||||
|
def test_get_context_data(self):
|
||||||
|
customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
package = self._setup_hosting_package(customer, 1)
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('create_mailbox', kwargs={'package': package.pk}))
|
||||||
|
self.assertIn('hostingpackage', response.context)
|
||||||
|
self.assertEqual(response.context['hostingpackage'], package)
|
||||||
|
self.assertIn('customer', response.context)
|
||||||
|
self.assertEqual(response.context['customer'], customer)
|
||||||
|
|
||||||
|
def test_get_form_kwargs(self):
|
||||||
|
customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
package = self._setup_hosting_package(customer, 1)
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
view = CreateMailbox(
|
||||||
|
request=MagicMock(), kwargs={'package': str(package.pk)})
|
||||||
|
the_kwargs = view.get_form_kwargs()
|
||||||
|
self.assertIn('hostingpackage', the_kwargs)
|
||||||
|
self.assertEqual(the_kwargs['hostingpackage'], package)
|
||||||
|
|
||||||
|
def test_form_valid_redirect(self):
|
||||||
|
customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
package = self._setup_hosting_package(customer, 1)
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('create_mailbox', kwargs={'package': package.pk}),
|
||||||
|
data={'password1': TEST_PASSWORD, 'password2': TEST_PASSWORD})
|
||||||
|
self.assertRedirects(response, package.get_absolute_url())
|
||||||
|
|
||||||
|
def test_form_valid_message(self):
|
||||||
|
customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
package = self._setup_hosting_package(customer, 1)
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('create_mailbox', kwargs={'package': package.pk}),
|
||||||
|
follow=True,
|
||||||
|
data={'password1': TEST_PASSWORD, 'password2': TEST_PASSWORD})
|
||||||
|
messages = list(response.context['messages'])
|
||||||
|
self.assertEqual(len(messages), 1)
|
||||||
|
self.assertEqual(
|
||||||
|
'Mailbox usr01p01 created successfully.', str(messages[0]))
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
CELERY_ALWAYS_EAGER=True,
|
||||||
|
CELERY_CACHE_BACKEND='memory',
|
||||||
|
BROKER_BACKEND='memory'
|
||||||
|
)
|
||||||
|
class ChangeMailboxPasswordTest(HostingPackageAwareTestMixin, TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
self.package = self._setup_hosting_package(self.customer, 1)
|
||||||
|
self.mailbox = Mailbox.objects.create_mailbox(
|
||||||
|
self.package.osuser, TEST_PASSWORD)
|
||||||
|
|
||||||
|
def test_get_anonymous(self):
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('change_mailbox_password', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'slug': self.mailbox.username}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_regular_user(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('change_mailbox_password', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'slug': self.mailbox.username}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_other_regular_user(self):
|
||||||
|
User.objects.create_user(
|
||||||
|
'test2', email='test2@example.org', password=TEST_PASSWORD)
|
||||||
|
self.client.login(username='test2', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('change_mailbox_password', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'slug': self.mailbox.username}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_staff_user(self):
|
||||||
|
User.objects.create_superuser(
|
||||||
|
'admin', email='admin@example.org', password=TEST_PASSWORD)
|
||||||
|
self.client.login(username='admin', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('change_mailbox_password', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'slug': self.mailbox.username}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_template(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('change_mailbox_password', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'slug': self.mailbox.username}))
|
||||||
|
self.assertTemplateUsed(
|
||||||
|
response, 'managemails/mailbox_setpassword.html')
|
||||||
|
|
||||||
|
def test_get_context_data(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('change_mailbox_password', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'slug': self.mailbox.username}))
|
||||||
|
self.assertIn('hostingpackage', response.context)
|
||||||
|
self.assertEqual(response.context['hostingpackage'], self.package)
|
||||||
|
self.assertIn('customer', response.context)
|
||||||
|
self.assertEqual(response.context['customer'], self.customer)
|
||||||
|
|
||||||
|
def test_get_form_kwargs(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
view = ChangeMailboxPassword(request=MagicMock(), kwargs={
|
||||||
|
'package': str(self.package.pk),
|
||||||
|
'slug': self.mailbox.username})
|
||||||
|
the_kwargs = view.get_form_kwargs()
|
||||||
|
self.assertIn('hostingpackage', the_kwargs)
|
||||||
|
self.assertEqual(the_kwargs['hostingpackage'], self.package)
|
||||||
|
|
||||||
|
def test_form_valid_redirect(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('change_mailbox_password', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'slug': self.mailbox.username}),
|
||||||
|
data={'password1': TEST_PASSWORD, 'password2': TEST_PASSWORD})
|
||||||
|
self.assertRedirects(response, self.package.get_absolute_url())
|
||||||
|
|
||||||
|
def test_form_valid_message(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('change_mailbox_password', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'slug': self.mailbox.username}),
|
||||||
|
follow=True,
|
||||||
|
data={'password1': TEST_PASSWORD, 'password2': TEST_PASSWORD})
|
||||||
|
messages = list(response.context['messages'])
|
||||||
|
self.assertEqual(len(messages), 1)
|
||||||
|
self.assertEqual(
|
||||||
|
str(messages[0]),
|
||||||
|
'Successfully set new password for mailbox usr01p01.')
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
CELERY_ALWAYS_EAGER=True,
|
||||||
|
CELERY_CACHE_BACKEND='memory',
|
||||||
|
BROKER_BACKEND='memory'
|
||||||
|
)
|
||||||
|
class AddMailAddressTest(HostingPackageAwareTestMixin, TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
self.package = self._setup_hosting_package(self.customer, 1)
|
||||||
|
self.maildomain = MailDomain.objects.create(
|
||||||
|
domain='example.org', customer=self.customer)
|
||||||
|
|
||||||
|
def test_get_anonymous(self):
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('add_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain
|
||||||
|
}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_regular_user(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('add_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain
|
||||||
|
}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_other_regular_user(self):
|
||||||
|
User.objects.create_user(
|
||||||
|
'test2', email='test2@example.org', password=TEST_PASSWORD)
|
||||||
|
self.client.login(username='test2', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('add_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain
|
||||||
|
}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_staff_user(self):
|
||||||
|
User.objects.create_superuser(
|
||||||
|
'admin', email='admin@example.org', password=TEST_PASSWORD)
|
||||||
|
self.client.login(username='admin', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('add_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain
|
||||||
|
}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_template(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('add_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain
|
||||||
|
}))
|
||||||
|
self.assertTemplateUsed(
|
||||||
|
response, 'managemails/mailaddress_create.html')
|
||||||
|
|
||||||
|
def test_get_context_data(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('add_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain
|
||||||
|
}))
|
||||||
|
self.assertIn('customer', response.context)
|
||||||
|
self.assertEqual(response.context['customer'], self.customer)
|
||||||
|
|
||||||
|
def test_get_form_kwargs(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
view = AddMailAddress(request=MagicMock(), kwargs={
|
||||||
|
'package': str(self.package.pk),
|
||||||
|
'domain': self.maildomain.domain})
|
||||||
|
the_kwargs = view.get_form_kwargs()
|
||||||
|
self.assertIn('hostingpackage', the_kwargs)
|
||||||
|
self.assertEqual(the_kwargs['hostingpackage'], self.package)
|
||||||
|
self.assertIn('maildomain', the_kwargs)
|
||||||
|
self.assertEqual(the_kwargs['maildomain'], self.maildomain)
|
||||||
|
|
||||||
|
def test_form_valid_redirect(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('add_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain
|
||||||
|
}),
|
||||||
|
data={
|
||||||
|
'localpart': 'test',
|
||||||
|
'mailbox_or_forwards': MAILBOX_OR_FORWARDS.forwards,
|
||||||
|
'mailbox': '',
|
||||||
|
'forwards': 'test2@example.org',
|
||||||
|
})
|
||||||
|
self.assertRedirects(response, self.package.get_absolute_url())
|
||||||
|
|
||||||
|
def test_form_valid_message(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('add_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain
|
||||||
|
}),
|
||||||
|
follow=True,
|
||||||
|
data={
|
||||||
|
'localpart': 'test',
|
||||||
|
'mailbox_or_forwards': MAILBOX_OR_FORWARDS.forwards,
|
||||||
|
'mailbox': '',
|
||||||
|
'forwards': 'test2@example.org',
|
||||||
|
})
|
||||||
|
messages = list(response.context['messages'])
|
||||||
|
self.assertEqual(len(messages), 1)
|
||||||
|
self.assertEqual(
|
||||||
|
str(messages[0]),
|
||||||
|
'Successfully added mail address test@example.org')
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
CELERY_ALWAYS_EAGER=True,
|
||||||
|
CELERY_CACHE_BACKEND='memory',
|
||||||
|
BROKER_BACKEND='memory'
|
||||||
|
)
|
||||||
|
class DeleteMailAddressTest(HostingPackageAwareTestMixin, TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
self.package = self._setup_hosting_package(self.customer, 1)
|
||||||
|
self.maildomain = MailDomain.objects.create(
|
||||||
|
domain='example.org', customer=self.customer)
|
||||||
|
self.mailaddress = MailAddress.objects.create(
|
||||||
|
localpart='test', domain=self.maildomain)
|
||||||
|
self.mailaddress.set_forward_addresses(['test2@example.org'])
|
||||||
|
|
||||||
|
def test_get_anonymous(self):
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('delete_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_regular_user(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('delete_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_other_regular_user(self):
|
||||||
|
User.objects.create_user(
|
||||||
|
'test2', email='test2@example.org', password=TEST_PASSWORD)
|
||||||
|
self.client.login(username='test2', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('delete_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_staff_user(self):
|
||||||
|
User.objects.create_superuser(
|
||||||
|
'admin', email='admin@example.org', password=TEST_PASSWORD)
|
||||||
|
self.client.login(username='admin', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('delete_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_template(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('delete_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertTemplateUsed(
|
||||||
|
response, 'managemails/mailaddress_confirm_delete.html')
|
||||||
|
|
||||||
|
def test_get_context_data(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('delete_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertIn('customer', response.context)
|
||||||
|
self.assertEqual(response.context['customer'], self.customer)
|
||||||
|
self.assertIn('hostingpackage', response.context)
|
||||||
|
self.assertEqual(response.context['hostingpackage'], self.package)
|
||||||
|
self.assertIn('maildomain', response.context)
|
||||||
|
self.assertEqual(response.context['maildomain'], self.maildomain)
|
||||||
|
|
||||||
|
def test_form_valid_redirect(self):
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('delete_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}),
|
||||||
|
data={})
|
||||||
|
self.assertRedirects(response, self.package.get_absolute_url())
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
CELERY_ALWAYS_EAGER=True,
|
||||||
|
CELERY_CACHE_BACKEND='memory',
|
||||||
|
BROKER_BACKEND='memory'
|
||||||
|
)
|
||||||
|
class EditMailAddressTest(HostingPackageAwareTestMixin, TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.customer = User.objects.create_user(
|
||||||
|
TEST_USER, email=TEST_EMAIL, password=TEST_PASSWORD)
|
||||||
|
self.package = self._setup_hosting_package(self.customer, 1)
|
||||||
|
self.maildomain = MailDomain.objects.create(
|
||||||
|
domain='example.org', customer=self.customer)
|
||||||
|
|
||||||
|
def _set_mailaddress_with_forward(self):
|
||||||
|
self.mailaddress = MailAddress.objects.create(
|
||||||
|
localpart='test', domain=self.maildomain)
|
||||||
|
self.mailaddress.set_forward_addresses(['test2@example.org'])
|
||||||
|
|
||||||
|
def _set_mailaddress_with_mailbox(self):
|
||||||
|
self.mailaddress = MailAddress.objects.create(
|
||||||
|
localpart='test', domain=self.maildomain)
|
||||||
|
self.mailbox = Mailbox.objects.create_mailbox(self.package.osuser)
|
||||||
|
self.mailaddress.set_mailbox(self.mailbox)
|
||||||
|
|
||||||
|
def test_get_anonymous(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('edit_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_regular_user(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('edit_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_other_regular_user(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
User.objects.create_user(
|
||||||
|
'test2', email='test2@example.org', password=TEST_PASSWORD)
|
||||||
|
self.client.login(username='test2', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('edit_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertEqual(response.status_code, 403)
|
||||||
|
|
||||||
|
def test_get_staff_user(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
User.objects.create_superuser(
|
||||||
|
'admin', email='admin@example.org', password=TEST_PASSWORD)
|
||||||
|
self.client.login(username='admin', password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('edit_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_get_template(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('edit_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertTemplateUsed(response, 'managemails/mailaddress_edit.html')
|
||||||
|
|
||||||
|
def test_get_context_data(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('edit_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}))
|
||||||
|
self.assertIn('customer', response.context)
|
||||||
|
self.assertEqual(response.context['customer'], self.customer)
|
||||||
|
|
||||||
|
def test_get_form_kwargs(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
view = EditMailAddress(
|
||||||
|
request=MagicMock(), kwargs={
|
||||||
|
'package': str(self.package.pk),
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': str(self.mailaddress.pk)})
|
||||||
|
the_kwargs = view.get_form_kwargs()
|
||||||
|
self.assertIn('hostingpackage', the_kwargs)
|
||||||
|
self.assertEqual(the_kwargs['hostingpackage'], self.package)
|
||||||
|
self.assertIn('maildomain', the_kwargs)
|
||||||
|
self.assertEqual(the_kwargs['maildomain'], self.maildomain)
|
||||||
|
|
||||||
|
def test_get_initial_with_forwards(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
view = EditMailAddress(
|
||||||
|
request=MagicMock(), kwargs={
|
||||||
|
'package': str(self.package.pk),
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': str(self.mailaddress.pk)})
|
||||||
|
initial = view.get_initial()
|
||||||
|
self.assertIn('mailbox_or_forwards', initial)
|
||||||
|
self.assertEqual(
|
||||||
|
initial['mailbox_or_forwards'], MAILBOX_OR_FORWARDS.forwards)
|
||||||
|
self.assertIn('forwards', initial)
|
||||||
|
self.assertEqual(initial['forwards'], 'test2@example.org')
|
||||||
|
self.assertNotIn('mailbox', initial)
|
||||||
|
|
||||||
|
def test_get_initial_with_mailbox(self):
|
||||||
|
self._set_mailaddress_with_mailbox()
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
view = EditMailAddress(
|
||||||
|
request=MagicMock(), kwargs={
|
||||||
|
'package': str(self.package.pk),
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': str(self.mailaddress.pk)})
|
||||||
|
initial = view.get_initial()
|
||||||
|
self.assertIn('mailbox_or_forwards', initial)
|
||||||
|
self.assertEqual(
|
||||||
|
initial['mailbox_or_forwards'], MAILBOX_OR_FORWARDS.mailbox)
|
||||||
|
self.assertIn('mailbox', initial)
|
||||||
|
self.assertEqual(initial['mailbox'], self.mailbox)
|
||||||
|
self.assertNotIn('forwards', initial)
|
||||||
|
|
||||||
|
def test_get_initial_with_unassigned_address(self):
|
||||||
|
self.mailaddress = MailAddress.objects.create(
|
||||||
|
localpart='test', domain=self.maildomain)
|
||||||
|
view = EditMailAddress(
|
||||||
|
request=MagicMock(), kwargs={
|
||||||
|
'package': str(self.package.pk),
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': str(self.mailaddress.pk)})
|
||||||
|
initial = view.get_initial()
|
||||||
|
self.assertNotIn('mailbox_or_forwards', initial)
|
||||||
|
self.assertNotIn('forwards', initial)
|
||||||
|
self.assertNotIn('mailbox', initial)
|
||||||
|
|
||||||
|
def test_form_valid_redirect(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('edit_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}),
|
||||||
|
data={
|
||||||
|
'mailbox_or_forwards': MAILBOX_OR_FORWARDS.forwards,
|
||||||
|
'mailbox': '',
|
||||||
|
'forwards': 'test2@example.org,test3@example.org'
|
||||||
|
})
|
||||||
|
self.assertRedirects(response, self.package.get_absolute_url())
|
||||||
|
|
||||||
|
def test_form_valid_message(self):
|
||||||
|
self._set_mailaddress_with_forward()
|
||||||
|
self.client.login(username=TEST_USER, password=TEST_PASSWORD)
|
||||||
|
response = self.client.post(
|
||||||
|
reverse('edit_mailaddress', kwargs={
|
||||||
|
'package': self.package.pk,
|
||||||
|
'domain': self.maildomain.domain,
|
||||||
|
'pk': self.mailaddress.pk}),
|
||||||
|
follow=True,
|
||||||
|
data={
|
||||||
|
'mailbox_or_forwards': MAILBOX_OR_FORWARDS.forwards,
|
||||||
|
'mailbox': '',
|
||||||
|
'forwards': 'test2@example.org,test3@example.org'
|
||||||
|
})
|
||||||
|
messages = list(response.context['messages'])
|
||||||
|
self.assertEqual(len(messages), 1)
|
||||||
|
self.assertEqual(
|
||||||
|
str(messages[0]),
|
||||||
|
'Successfully updated mail address test@example.org targets.')
|
|
@ -46,6 +46,7 @@ class CreateMailbox(
|
||||||
|
|
||||||
def dispatch(self, request, *args, **kwargs):
|
def dispatch(self, request, *args, **kwargs):
|
||||||
resp = super(CreateMailbox, self).dispatch(request, *args, **kwargs)
|
resp = super(CreateMailbox, self).dispatch(request, *args, **kwargs)
|
||||||
|
if request.method != 'POST':
|
||||||
if not self.get_hosting_package().may_add_mailbox():
|
if not self.get_hosting_package().may_add_mailbox():
|
||||||
resp = HttpResponseForbidden(
|
resp = HttpResponseForbidden(
|
||||||
_('You are not allowed to add more mailboxes to this'
|
_('You are not allowed to add more mailboxes to this'
|
||||||
|
|
Loading…
Reference in a new issue