Files
next-tjwater-server/tests/unit/test_mcp_config.py
T
jiang 05183aff93
Generic Container CI/CD / test-build-publish (push) Successful in 3m53s
Server CI/CD v2 / build-test-publish-and-deploy (push) Successful in 3m52s
feat: extend operational investigation workflows
2026-10-30 17:30:19 +08:00

60 lines
2.1 KiB
Python

import pytest
from pydantic import ValidationError
from app.mcp.config import McpSettings
ISSUER = "http://192.168.1.114:8088/realms/tjwater"
def local_settings(**overrides):
return McpSettings(**{
"enabled": True,
"environment": "development",
"issuer_uri": ISSUER,
"dev_http_issuer_uri": ISSUER,
"resource_uri": "http://localhost/mcp",
"_env_file": None,
**overrides,
})
def test_explicit_private_development_issuer():
assert local_settings().issuer_uri == ISSUER
def test_execution_limit_is_separate_from_http_request_budget():
config = local_settings(max_calculation_timeout_seconds=120)
assert config.query_timeout_seconds == 120
assert config.max_request_timeout_seconds == 240
assert local_settings().max_calculation_timeout_seconds == 3600
with pytest.raises(ValidationError):
local_settings(query_timeout_seconds=241)
with pytest.raises(ValidationError):
local_settings(max_request_timeout_seconds=241)
with pytest.raises(ValidationError):
local_settings(max_calculation_timeout_seconds=119)
@pytest.mark.parametrize("overrides", [
{"environment": "production"},
{"environment": "production", "enabled": False},
{"dev_http_issuer_uri": ""},
{"issuer_uri": ISSUER + "/other"},
{"resource_uri": "http://192.168.1.114:8088/mcp"},
{"issuer_uri": "http://example.com/realm", "dev_http_issuer_uri": "http://example.com/realm"},
{"issuer_uri": "http://8.8.8.8/realm", "dev_http_issuer_uri": "http://8.8.8.8/realm"},
{"issuer_uri": ISSUER + "?query=1", "dev_http_issuer_uri": ISSUER + "?query=1"},
])
def test_rejects_unapproved_http_issuer_or_resource(overrides):
with pytest.raises(ValidationError):
local_settings(**overrides)
def test_development_mode_can_be_injected_from_environment(monkeypatch):
monkeypatch.setenv("ENVIRONMENT", "development")
monkeypatch.setenv("TJWATER_MCP_DEV_HTTP_ISSUER_URI", ISSUER)
monkeypatch.setenv("TJWATER_MCP_ISSUER_URI", ISSUER)
config = McpSettings(enabled=True, resource_uri="http://localhost/mcp", _env_file=None)
assert config.environment == "development"