Ignore non-object settings scrub inputs (#1645)
This commit is contained in:
@@ -47,4 +47,6 @@ def _scrub_value(key, value):
|
|||||||
|
|
||||||
def scrub_settings(settings: dict) -> dict:
|
def scrub_settings(settings: dict) -> dict:
|
||||||
"""Return a copy of ``settings`` with secret-shaped values masked (deep)."""
|
"""Return a copy of ``settings`` with secret-shaped values masked (deep)."""
|
||||||
|
if not isinstance(settings, dict):
|
||||||
|
return {}
|
||||||
return {k: _scrub_value(k, v) for k, v in (settings or {}).items()}
|
return {k: _scrub_value(k, v) for k, v in (settings or {}).items()}
|
||||||
|
|||||||
@@ -59,3 +59,8 @@ def test_empty_and_nonstring_secret_values_untouched():
|
|||||||
def test_exact_name_matches():
|
def test_exact_name_matches():
|
||||||
out = scrub_settings({"password": "p", "token": "t", "secret": "s", "apikey": "a", "key": "k"})
|
out = scrub_settings({"password": "p", "token": "t", "secret": "s", "apikey": "a", "key": "k"})
|
||||||
assert all(v == "" for v in out.values()), out
|
assert all(v == "" for v in out.values()), out
|
||||||
|
|
||||||
|
|
||||||
|
def test_non_object_settings_return_empty_mapping():
|
||||||
|
assert scrub_settings(["not", "settings"]) == {}
|
||||||
|
assert scrub_settings("not settings") == {}
|
||||||
|
|||||||
Reference in New Issue
Block a user