From 161570de7011e7d251d88e6d72f555ff463d464f Mon Sep 17 00:00:00 2001 From: Andrew Fyfe Date: Thu, 21 Dec 2017 12:18:39 +0000 Subject: [PATCH] split existing tests into tests directory --- modoboa/lib/{tests.py => tests/__init__.py} | 65 +++------------------ modoboa/lib/tests/test_u2u_decode.py | 60 +++++++++++++++++++ 2 files changed, 67 insertions(+), 58 deletions(-) rename modoboa/lib/{tests.py => tests/__init__.py} (55%) create mode 100644 modoboa/lib/tests/test_u2u_decode.py diff --git a/modoboa/lib/tests.py b/modoboa/lib/tests/__init__.py similarity index 55% rename from modoboa/lib/tests.py rename to modoboa/lib/tests/__init__.py index e8c963af7..ace3d977e 100644 --- a/modoboa/lib/tests.py +++ b/modoboa/lib/tests/__init__.py @@ -1,4 +1,5 @@ -# coding: utf-8 +# -*- coding: utf-8 -*- + """Testing utilities.""" from __future__ import unicode_literals @@ -13,8 +14,7 @@ from rest_framework.test import APITestCase from modoboa.core import models as core_models -from . import sysutils -from . import u2u_decode +from .. import sysutils try: s = socket.create_connection(('127.0.0.1', 25)) @@ -24,7 +24,7 @@ except socket.error: NO_SMTP = True try: - import ldap # NOQA + import ldap # noqa NO_LDAP = False except ImportError: NO_LDAP = True @@ -34,7 +34,7 @@ class ParametersMixin(object): """Add tools to manage parameters.""" @classmethod - def setUpTestData(cls): + def setUpTestData(cls): # noqa """Set LocalConfig instance.""" super(ParametersMixin, cls).setUpTestData() cls.localconfig = core_models.LocalConfig.objects.first() @@ -58,7 +58,7 @@ class ModoTestCase(ParametersMixin, TestCase): """All test cases must inherit from this one.""" @classmethod - def setUpTestData(cls): + def setUpTestData(cls): # noqa """Create a default user.""" super(ModoTestCase, cls).setUpTestData() management.call_command("load_initial_data") @@ -93,7 +93,7 @@ class ModoAPITestCase(ParametersMixin, APITestCase): """All test cases must inherit from this one.""" @classmethod - def setUpTestData(cls): + def setUpTestData(cls): # noqa """Create a default user.""" super(ModoAPITestCase, cls).setUpTestData() management.call_command("load_initial_data") @@ -104,54 +104,3 @@ class ModoAPITestCase(ParametersMixin, APITestCase): """Setup.""" super(ModoAPITestCase, self).setUp() self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key) - - -class U2UTestCase(TestCase): - """Test RFC1342 decoding utilities.""" - - def test_header_decoding(self): - """Simple decoding.""" - samples = [ - ("=?ISO-8859-15?Q?=20Profitez de tous les services en ligne sur " - "impots.gouv.fr?=", - "Profitez de tous les services en ligne sur impots.gouv.fr"), - ("=?ISO-8859-1?Q?Accus=E9?= de =?ISO-8859-1?Q?r=E9ception?= de " - "votre annonce", - "Accusé de réception de votre annonce"), - ("Sm=?ISO-8859-1?B?9g==?=rg=?ISO-8859-1?B?5Q==?=sbord", - "Sm\xf6rg\xe5sbord"), - # The following case currently fails because of the way we split - # encoded words to parse them separately, which can lead to - # unexpected unicode decode errors... I think it will work fine on - # Python3 - # ("=?utf-8?B?VMOpbMOpcMOpYWdlIFZJTkNJIEF1dG9yb3V0ZXMgLSBFeHDD?=\n" - # "=?utf-8?B?qWRpdGlvbiBkZSB2b3RyZSBjb21tYW5kZSBOwrAgMjAxNzEyMDcw" - # "MDA1?=\n=?utf-8?B?MyBkdSAwNy8xMi8yMDE3IDE0OjQ5OjQx?=", - # "") - ] - for sample in samples: - self.assertEqual(u2u_decode.u2u_decode(sample[0]), sample[1]) - - def test_address_header_decoding(self): - """Check address decoding.""" - mailsploit_sample = ( - "=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q?=00?=" - "=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?=@mailsploit.com") - expected_result = ( - "=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q??=" - "=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?=@mailsploit.com") - self.assertEqual( - u2u_decode.decode_address(mailsploit_sample), - ("", expected_result) - ) - mailsploit_sample = ( - '"=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q?=0A=00?="\n' - '<=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q?=0A=00?=' - '@mailsploit.com>') - expected_result = ( - 'potus@whitehouse.gov', - '=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q??=' - '@mailsploit.com') - self.assertEqual( - u2u_decode.decode_address(mailsploit_sample), - expected_result) diff --git a/modoboa/lib/tests/test_u2u_decode.py b/modoboa/lib/tests/test_u2u_decode.py new file mode 100644 index 000000000..b06bf38c6 --- /dev/null +++ b/modoboa/lib/tests/test_u2u_decode.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- + +"""Tests for u2u_decode.""" + +from __future__ import unicode_literals + +from django.test import TestCase + +from .. import u2u_decode + + +class U2UTestCase(TestCase): + """Test RFC1342 decoding utilities.""" + + def test_header_decoding(self): + """Simple decoding.""" + samples = [ + ("=?ISO-8859-15?Q?=20Profitez de tous les services en ligne sur " + "impots.gouv.fr?=", + "Profitez de tous les services en ligne sur impots.gouv.fr"), + ("=?ISO-8859-1?Q?Accus=E9?= de =?ISO-8859-1?Q?r=E9ception?= de " + "votre annonce", + "Accusé de réception de votre annonce"), + ("Sm=?ISO-8859-1?B?9g==?=rg=?ISO-8859-1?B?5Q==?=sbord", + "Sm\xf6rg\xe5sbord"), + # The following case currently fails because of the way we split + # encoded words to parse them separately, which can lead to + # unexpected unicode decode errors... I think it will work fine on + # Python3 + # ("=?utf-8?B?VMOpbMOpcMOpYWdlIFZJTkNJIEF1dG9yb3V0ZXMgLSBFeHDD?=\n" + # "=?utf-8?B?qWRpdGlvbiBkZSB2b3RyZSBjb21tYW5kZSBOwrAgMjAxNzEyMDcw" + # "MDA1?=\n=?utf-8?B?MyBkdSAwNy8xMi8yMDE3IDE0OjQ5OjQx?=", + # "") + ] + for sample in samples: + self.assertEqual(u2u_decode.u2u_decode(sample[0]), sample[1]) + + def test_address_header_decoding(self): + """Check address decoding.""" + mailsploit_sample = ( + "=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q?=00?=" + "=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?=@mailsploit.com") + expected_result = ( + "=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q??=" + "=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?=@mailsploit.com") + self.assertEqual( + u2u_decode.decode_address(mailsploit_sample), + ("", expected_result) + ) + mailsploit_sample = ( + '"=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q?=0A=00?="\n' + '<=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q?=0A=00?=' + '@mailsploit.com>') + expected_result = ( + 'potus@whitehouse.gov', + '=?utf-8?b?cG90dXNAd2hpdGVob3VzZS5nb3Y=?==?utf-8?Q??=' + '@mailsploit.com') + self.assertEqual( + u2u_decode.decode_address(mailsploit_sample), + expected_result)