Merge pull request #1599 from Toniob/scheme_fix

fix a bug with python3 showing no scheme available in settings
This commit is contained in:
Antoine Nguyen
2018-10-19 09:44:59 +02:00
committed by GitHub
2 changed files with 40 additions and 3 deletions
+3 -1
View File
@@ -6,6 +6,8 @@ Password hashers for Modoboa.
from __future__ import unicode_literals
from django.utils.encoding import smart_text
from modoboa.core.password_hashers.advanced import ( # NOQA:F401
BLFCRYPTHasher, MD5CRYPTHasher, SHA256CRYPTHasher, SHA512CRYPTHasher
)
@@ -40,7 +42,7 @@ def get_dovecot_schemes():
except OSError:
pass
else:
supported_schemes = ["{{{}}}".format(scheme)
supported_schemes = ["{{{}}}".format(smart_text(scheme))
for scheme in schemes.split()]
if not supported_schemes:
+37 -2
View File
@@ -12,7 +12,7 @@ from django.core import mail
from django.test import override_settings
from django.urls import reverse
from modoboa.core.password_hashers import get_password_hasher
from modoboa.core.password_hashers import get_password_hasher, get_dovecot_schemes
from modoboa.lib.tests import NO_SMTP, ModoTestCase
from .. import factories, models
@@ -71,7 +71,7 @@ class AuthenticationTestCase(ModoTestCase):
self.assertEqual(response.status_code, 302)
self.assertTrue(response.url.endswith(reverse("core:dashboard")))
def test_password_scheme(self):
def test_password_schemes(self):
"""Validate password scheme changes."""
username = "user@test.com"
password = "toto"
@@ -104,6 +104,41 @@ class AuthenticationTestCase(ModoTestCase):
user.refresh_from_db()
self.assertTrue(user.password.startswith(pw_hash.scheme))
def test_supported_schemes(self):
"""Validate dovecot supported schemes."""
supported_schemes = get_dovecot_schemes()
self.assertEqual(supported_schemes,
["{MD5}",
"{MD5-CRYPT}",
"{SHA}",
"{SHA1}",
"{SHA256}",
"{SHA512}",
"{SMD5}",
"{SSHA}",
"{SSHA256}",
"{SSHA512}",
"{PLAIN}",
"{CLEAR}",
"{CLEARTEXT}",
"{PLAIN-TRUNC}",
"{CRAM-MD5}",
"{SCRAM-SHA-1}",
"{HMAC-MD5}",
"{DIGEST-MD5}",
"{PLAIN-MD4}",
"{PLAIN-MD5}",
"{LDAP-MD5}",
"{LANMAN}",
"{NTLM}",
"{OTP}",
"{SKEY}",
"{RPA}",
"{PBKDF2}",
"{CRYPT}",
"{SHA256-CRYPT}",
"{SHA512-CRYPT}"])
class PasswordResetTestCase(ModoTestCase):
"""Test password reset service."""