Files
ss-tools/backend/tests/services/clean_release/test_source_isolation.py
busya f75c15dbc6 test: massive coverage expansion — 15 new test modules + assistant tool fixes + orthogonal testing
- 10 translate plugin test files (100% coverage on 12 modules)
- assistant/handler tools: 85+ tests covering dispatch, registry, resolvers, routes, llm_planner, 13 tool handlers
- clean release: artifact_catalog_loader, mappers, approval, publication tests
- API routes: translate_helpers, validation_service extensions, datasets to 100%
- notifications: providers/service tests
- services: profile_preference_service
- docs/orthogonal-test-report.md — full speckit.tests audit
- Fixes: 3 git_base async mock failures, 4 assistant handler permission-check patches
- .gitignore: coverage artifacts
2026-06-15 15:38:59 +03:00

92 lines
3.8 KiB
Python

# #region Test.CleanRelease.SourceIsolation [C:2] [TYPE Module] [SEMANTICS test,clean-release,source,isolation]
# @BRIEF Tests for validate_internal_sources — endpoint validation against registry.
# @RELATION BINDS_TO -> [SourceIsolation]
from datetime import UTC, datetime
import pytest
from src.models.clean_release import ResourceSourceEntry, ResourceSourceRegistry
from src.services.clean_release.source_isolation import validate_internal_sources
def _make_registry(hosts: list[str] | None = None) -> ResourceSourceRegistry:
"""Create a ResourceSourceRegistry with entries."""
if hosts is None:
hosts = ["internal.local", "repo.internal.local"]
now = datetime.now(UTC)
entries = [
ResourceSourceEntry(
source_id=f"src-{i}", host=h, protocol="https",
purpose="internal", enabled=True,
)
for i, h in enumerate(hosts)
]
return ResourceSourceRegistry(
registry_id="reg-1", name="Test Registry", entries=entries,
updated_at=now, updated_by="system", status="ACTIVE",
)
class TestValidateInternalSources:
"""validate_internal_sources — endpoint validation."""
# #region test_all_internal [C:2] [TYPE Function]
def test_all_internal(self):
"""All endpoints in allowed list → ok=True."""
registry = _make_registry()
result = validate_internal_sources(registry, ["internal.local", "repo.internal.local"])
assert result["ok"] is True
assert result["violations"] == []
# #endregion test_all_internal
# #region test_some_external [C:2] [TYPE Function]
def test_some_external(self):
"""External endpoint → violation reported."""
registry = _make_registry()
result = validate_internal_sources(registry, ["internal.local", "external.bad.com"])
assert result["ok"] is False
assert len(result["violations"]) == 1
assert result["violations"][0]["location"] == "external.bad.com"
assert result["violations"][0]["blocked_release"] is True
# #endregion test_some_external
# #region test_empty_endpoint [C:2] [TYPE Function]
def test_empty_endpoint(self):
"""Empty endpoint → violation with empty-endpoint placeholder."""
registry = _make_registry()
result = validate_internal_sources(registry, [""])
assert result["ok"] is False
assert result["violations"][0]["location"] == "<empty-endpoint>"
# #endregion test_empty_endpoint
# #region test_disabled_entries_ignored [C:2] [TYPE Function]
def test_disabled_entries_ignored(self):
"""Disabled registry entries are not included in allowed hosts."""
entries = [
ResourceSourceEntry(source_id="s1", host="internal.local", protocol="https", purpose="internal", enabled=False),
]
registry = ResourceSourceRegistry(
registry_id="reg-1", name="Test", entries=entries,
updated_at=datetime.now(UTC), updated_by="system",
)
result = validate_internal_sources(registry, ["internal.local"])
assert result["ok"] is False
assert len(result["violations"]) == 1
# #endregion test_disabled_entries_ignored
# #region test_case_insensitive_matching [C:2] [TYPE Function]
def test_case_insensitive_matching(self):
"""Endpoint matching is case-insensitive."""
registry = _make_registry(hosts=["Internal.Local"])
result = validate_internal_sources(registry, ["INTERNAL.LOCAL"])
assert result["ok"] is True
# #endregion test_case_insensitive_matching
# #region test_no_endpoints [C:2] [TYPE Function]
def test_no_endpoints(self):
"""No endpoints provided → ok=True (nothing to check)."""
registry = _make_registry()
result = validate_internal_sources(registry, [])
assert result["ok"] is True
# #endregion test_no_endpoints