Files
ITWorx_MCP_Hub-Public/tests/test_dependency_security_lock.py
T

36 lines
1.5 KiB
Python

from __future__ import annotations
import tomllib
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def _version_tuple(version: str) -> tuple[int, ...]:
return tuple(int(part) for part in version.split("."))
def test_mcp_http_transport_dependencies_are_locked_at_fixed_versions() -> None:
pyproject = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
constraints = pyproject["tool"]["uv"]["constraint-dependencies"]
assert "httpcore2>=2.10.0" in constraints
assert "httpx2>=2.12.0" in constraints
lock = tomllib.loads((ROOT / "uv.lock").read_text(encoding="utf-8"))
packages = {package["name"]: package for package in lock["package"]}
mcp_dependencies = {dependency["name"] for dependency in packages["mcp"]["dependencies"]}
httpx2_dependencies = {dependency["name"] for dependency in packages["httpx2"]["dependencies"]}
assert "httpx2" in mcp_dependencies
assert "httpcore2" in httpx2_dependencies
assert _version_tuple(packages["httpcore2"]["version"]) >= (2, 10, 0)
assert _version_tuple(packages["httpx2"]["version"]) >= (2, 12, 0)
requirements = {}
for line in (ROOT / "requirements.lock").read_text(encoding="utf-8").splitlines():
if "==" in line:
name, version = line.split("==", maxsplit=1)
requirements[name] = version
assert requirements["httpcore2"] == packages["httpcore2"]["version"]
assert requirements["httpx2"] == packages["httpx2"]["version"]