[verified] fix(auth): support Unicode credentials
This commit is contained in:
@@ -63,20 +63,26 @@ def test_load_admin_credentials_fails_closed_when_environment_cannot_be_read():
|
||||
|
||||
def test_verify_credentials_uses_constant_time_comparison_for_both_fields(monkeypatch):
|
||||
credentials = authentication.AdminCredentials(ADMIN_ID, ADMIN_PASSWORD)
|
||||
comparisons: list[tuple[str, str]] = []
|
||||
comparisons: list[tuple[bytes, bytes]] = []
|
||||
|
||||
def record_compare(left: str, right: str) -> bool:
|
||||
def record_compare(left: bytes, right: bytes) -> bool:
|
||||
comparisons.append((left, right))
|
||||
return left == right
|
||||
|
||||
monkeypatch.setattr(authentication.hmac, "compare_digest", record_compare)
|
||||
|
||||
assert authentication.verify_credentials(credentials, ADMIN_ID, ADMIN_PASSWORD) is True
|
||||
assert comparisons == [(ADMIN_ID, ADMIN_ID), (ADMIN_PASSWORD, ADMIN_PASSWORD)]
|
||||
assert comparisons == [
|
||||
(ADMIN_ID.encode("utf-8"), ADMIN_ID.encode("utf-8")),
|
||||
(ADMIN_PASSWORD.encode("utf-8"), ADMIN_PASSWORD.encode("utf-8")),
|
||||
]
|
||||
|
||||
comparisons.clear()
|
||||
assert authentication.verify_credentials(credentials, "wrong-id", "wrong-password") is False
|
||||
assert comparisons == [("wrong-id", ADMIN_ID), ("wrong-password", ADMIN_PASSWORD)]
|
||||
assert comparisons == [
|
||||
(b"wrong-id", ADMIN_ID.encode("utf-8")),
|
||||
(b"wrong-password", ADMIN_PASSWORD.encode("utf-8")),
|
||||
]
|
||||
|
||||
|
||||
def test_failed_login_delay_waits_only_for_remaining_minimum_duration():
|
||||
|
||||
Reference in New Issue
Block a user