summaryrefslogtreecommitdiff
path: root/tests/auth_tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auth_tests')
-rw-r--r--tests/auth_tests/test_forms.py23
-rw-r--r--tests/auth_tests/test_templatetags.py37
2 files changed, 60 insertions, 0 deletions
diff --git a/tests/auth_tests/test_forms.py b/tests/auth_tests/test_forms.py
index 0f8b48286a..df91f100f5 100644
--- a/tests/auth_tests/test_forms.py
+++ b/tests/auth_tests/test_forms.py
@@ -1445,6 +1445,29 @@ class ReadOnlyPasswordHashTest(SimpleTestCase):
"</div>",
)
+ def test_render_no_password(self):
+ widget = ReadOnlyPasswordHashWidget()
+ self.assertHTMLEqual(
+ widget.render("name", None, {}),
+ "<div><p><strong>No password set.</p><p>"
+ '<a role="button" class="button" href="../password/">Set password</a>'
+ "</p></div>",
+ )
+
+ @override_settings(
+ PASSWORD_HASHERS=["django.contrib.auth.hashers.PBKDF2PasswordHasher"]
+ )
+ def test_render_invalid_password_format(self):
+ widget = ReadOnlyPasswordHashWidget()
+ value = "pbkdf2_sh"
+ self.assertHTMLEqual(
+ widget.render("name", value, {}),
+ "<div><p>"
+ "<strong>Invalid password format or unknown hashing algorithm.</strong>"
+ '</p><p><a role="button" class="button" href="../password/">Reset password'
+ "</a></p></div>",
+ )
+
def test_readonly_field_has_changed(self):
field = ReadOnlyPasswordHashField()
self.assertIs(field.disabled, True)
diff --git a/tests/auth_tests/test_templatetags.py b/tests/auth_tests/test_templatetags.py
new file mode 100644
index 0000000000..5cd5f558bd
--- /dev/null
+++ b/tests/auth_tests/test_templatetags.py
@@ -0,0 +1,37 @@
+from django.contrib.auth.hashers import make_password
+from django.contrib.auth.templatetags.auth import render_password_as_hash
+from django.test import SimpleTestCase, override_settings
+
+
+class RenderPasswordAsHashTests(SimpleTestCase):
+ @override_settings(
+ PASSWORD_HASHERS=["django.contrib.auth.hashers.PBKDF2PasswordHasher"]
+ )
+ def test_valid_password(self):
+ value = (
+ "pbkdf2_sha256$100000$a6Pucb1qSFcD$WmCkn9Hqidj48NVe5x0FEM6A9YiOqQcl/83m2Z5u"
+ "dm0="
+ )
+ hashed_html = (
+ "<p><strong>algorithm</strong>: <bdi>pbkdf2_sha256</bdi> "
+ "<strong>iterations</strong>: <bdi>100000</bdi> "
+ "<strong>salt</strong>: <bdi>a6Pucb******</bdi> "
+ "<strong>hash</strong>: <bdi>WmCkn9**************************************"
+ "</bdi></p>"
+ )
+ self.assertEqual(render_password_as_hash(value), hashed_html)
+
+ def test_invalid_password(self):
+ expected = (
+ "<p><strong>Invalid password format or unknown hashing algorithm.</strong>"
+ "</p>"
+ )
+ for value in ["pbkdf2_sh", "md5$password", "invalid", "testhash$password"]:
+ with self.subTest(value=value):
+ self.assertEqual(render_password_as_hash(value), expected)
+
+ def test_no_password(self):
+ expected = "<p><strong>No password set.</strong></p>"
+ for value in ["", None, make_password(None)]:
+ with self.subTest(value=value):
+ self.assertEqual(render_password_as_hash(value), expected)