fix(security): durcir les placeholders URL documentaires
This commit is contained in:
@@ -145,6 +145,48 @@ def test_main_ignores_documentation_url_placeholders(
|
||||
assert "OK:" in capsys.readouterr().out
|
||||
|
||||
|
||||
def test_main_detects_a_real_url_secret_after_a_placeholder(
|
||||
secret_checker: ModuleType, tmp_path: Path, capsys: CaptureFixture[str]
|
||||
) -> None:
|
||||
"""Détecte un secret réel placé après un placeholder sur la même URL.
|
||||
|
||||
:param secret_checker: Module du script sous test.
|
||||
:param tmp_path: Répertoire temporaire représentant un dépôt.
|
||||
:param capsys: Fixture de capture de sortie.
|
||||
:return: None
|
||||
"""
|
||||
sentinel = "m14-url-after-placeholder-sentinel"
|
||||
(tmp_path / "guide.md").write_text(
|
||||
f"https://example.invalid/?token={{jeton}}&api_key={sentinel}\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
assert secret_checker.main([], root=tmp_path) == 1
|
||||
output = capsys.readouterr().out
|
||||
assert "guide.md:1 (parametre-url)" in output
|
||||
assert sentinel not in output
|
||||
|
||||
|
||||
@pytest.mark.parametrize("value", ["<ghp_…>", "***"])
|
||||
def test_main_rejects_ambiguous_url_placeholders(
|
||||
secret_checker: ModuleType, tmp_path: Path, capsys: CaptureFixture[str], value: str
|
||||
) -> None:
|
||||
"""Refuse les valeurs qui ne sont pas des placeholders documentaires fermés.
|
||||
|
||||
:param secret_checker: Module du script sous test.
|
||||
:param tmp_path: Répertoire temporaire représentant un dépôt.
|
||||
:param capsys: Fixture de capture de sortie.
|
||||
:param value: Valeur ambiguë à ne pas exempter.
|
||||
:return: None
|
||||
"""
|
||||
(tmp_path / "guide.md").write_text(
|
||||
f"https://example.invalid/?token={value}\n", encoding="utf-8"
|
||||
)
|
||||
|
||||
assert secret_checker.main([], root=tmp_path) == 1
|
||||
assert "guide.md:1 (parametre-url)" in capsys.readouterr().out
|
||||
|
||||
|
||||
def test_staged_mode_inspects_only_paths_provided_by_git(
|
||||
secret_checker: ModuleType, tmp_path: Path, capsys: CaptureFixture[str]
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user