mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 14:07:55 +00:00
104 lines
3.3 KiB
Python
104 lines
3.3 KiB
Python
"""Tests for file sensitivity policy."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from openjarvis.security.file_policy import filter_sensitive_paths, is_sensitive_file
|
|
|
|
|
|
class TestIsSensitiveFile:
|
|
def test_sensitive_env(self) -> None:
|
|
assert is_sensitive_file(".env") is True
|
|
|
|
def test_sensitive_env_local(self) -> None:
|
|
assert is_sensitive_file(".env.local") is True
|
|
|
|
def test_sensitive_pem(self) -> None:
|
|
assert is_sensitive_file("server.pem") is True
|
|
|
|
def test_sensitive_key(self) -> None:
|
|
assert is_sensitive_file("private.key") is True
|
|
|
|
def test_sensitive_id_rsa(self) -> None:
|
|
assert is_sensitive_file("id_rsa") is True
|
|
|
|
def test_sensitive_credentials(self) -> None:
|
|
assert is_sensitive_file("credentials.json") is True
|
|
|
|
def test_sensitive_htpasswd(self) -> None:
|
|
assert is_sensitive_file(".htpasswd") is True
|
|
|
|
def test_sensitive_pgpass(self) -> None:
|
|
assert is_sensitive_file(".pgpass") is True
|
|
|
|
def test_sensitive_netrc(self) -> None:
|
|
assert is_sensitive_file(".netrc") is True
|
|
|
|
def test_sensitive_p12(self) -> None:
|
|
assert is_sensitive_file("cert.p12") is True
|
|
|
|
def test_sensitive_pfx(self) -> None:
|
|
assert is_sensitive_file("cert.pfx") is True
|
|
|
|
def test_sensitive_jks(self) -> None:
|
|
assert is_sensitive_file("keystore.jks") is True
|
|
|
|
def test_sensitive_id_ed25519(self) -> None:
|
|
assert is_sensitive_file("id_ed25519") is True
|
|
|
|
def test_sensitive_secret(self) -> None:
|
|
assert is_sensitive_file(".secret") is True
|
|
|
|
def test_sensitive_env_in_path(self) -> None:
|
|
assert is_sensitive_file(Path("/some/dir/.env")) is True
|
|
|
|
def test_not_sensitive_py(self) -> None:
|
|
assert is_sensitive_file("main.py") is False
|
|
|
|
def test_not_sensitive_txt(self) -> None:
|
|
assert is_sensitive_file("readme.txt") is False
|
|
|
|
def test_not_sensitive_toml(self) -> None:
|
|
assert is_sensitive_file("pyproject.toml") is False
|
|
|
|
def test_not_sensitive_json(self) -> None:
|
|
assert is_sensitive_file("package.json") is False
|
|
|
|
def test_path_object(self) -> None:
|
|
assert is_sensitive_file(Path("server.pem")) is True
|
|
assert is_sensitive_file(Path("main.py")) is False
|
|
|
|
|
|
class TestFilterSensitivePaths:
|
|
def test_filter_sensitive_paths(self) -> None:
|
|
paths = [
|
|
"main.py",
|
|
".env",
|
|
"server.pem",
|
|
"readme.txt",
|
|
"credentials.json",
|
|
"app.js",
|
|
]
|
|
filtered = filter_sensitive_paths(paths)
|
|
names = [p.name for p in filtered]
|
|
assert "main.py" in names
|
|
assert "readme.txt" in names
|
|
assert "app.js" in names
|
|
assert ".env" not in names
|
|
assert "server.pem" not in names
|
|
assert "credentials.json" not in names
|
|
|
|
def test_filter_all_sensitive(self) -> None:
|
|
paths = [".env", "server.pem", "credentials.json"]
|
|
filtered = filter_sensitive_paths(paths)
|
|
assert filtered == []
|
|
|
|
def test_filter_none_sensitive(self) -> None:
|
|
paths = ["main.py", "app.js", "readme.txt"]
|
|
filtered = filter_sensitive_paths(paths)
|
|
assert len(filtered) == 3
|
|
|
|
def test_filter_empty(self) -> None:
|
|
assert filter_sensitive_paths([]) == []
|