This commit is contained in:
41
tests/test_policy.py
Normal file
41
tests/test_policy.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from dataclasses import replace
|
||||
|
||||
from test_config import settings
|
||||
|
||||
from lai_automation.git import ChangeSummary
|
||||
from lai_automation.policy import evaluate_changes
|
||||
|
||||
|
||||
def test_policy_accepts_small_application_change() -> None:
|
||||
result = evaluate_changes(
|
||||
ChangeSummary(("app/Services/Example.php", "tests/Feature/ExampleTest.php"), 40, 5),
|
||||
settings(),
|
||||
)
|
||||
assert result.allowed
|
||||
|
||||
|
||||
def test_policy_rejects_secrets_and_vendor_paths() -> None:
|
||||
result = evaluate_changes(ChangeSummary((".env", "vendor/foo.php"), 2, 0), settings())
|
||||
assert not result.allowed
|
||||
assert len(result.errors) == 2
|
||||
|
||||
|
||||
def test_direct_main_blocks_validator_and_migrations() -> None:
|
||||
config = replace(
|
||||
settings(),
|
||||
mode="direct-main",
|
||||
dry_run=False,
|
||||
allow_direct_main=True,
|
||||
gitea_token="token",
|
||||
)
|
||||
result = evaluate_changes(
|
||||
ChangeSummary(("app/Services/SQLValidatorService.php", "database/migrations/new.php"), 10, 2),
|
||||
config,
|
||||
)
|
||||
assert not result.allowed
|
||||
|
||||
|
||||
def test_policy_rejects_symlinks(tmp_path) -> None:
|
||||
(tmp_path / "link.php").symlink_to("/etc/passwd")
|
||||
result = evaluate_changes(ChangeSummary(("link.php",), 1, 0), settings(), tmp_path)
|
||||
assert not result.allowed
|
||||
Reference in New Issue
Block a user