test_paas.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import json
  2. from ontorefactor_governance.paas import paas_status, record_agent_run
  3. class FakeResponse:
  4. def __enter__(self):
  5. return self
  6. def __exit__(self, *_):
  7. return False
  8. def read(self):
  9. return b'{"run_id":"paas-run-1"}'
  10. def _clear(monkeypatch):
  11. for name in (
  12. "AGENTPAAS_BASE_URL", "AGENTPAAS_API_KEY", "ONTOREFACTOR_PAAS_ASSET_AGENT_ID",
  13. "ONTOREFACTOR_PAAS_SEMANTIC_AGENT_ID", "ONTOREFACTOR_PAAS_VALIDATION_AGENT_ID",
  14. "ONTOREFACTOR_PAAS_DECISION_AGENT_ID",
  15. ):
  16. monkeypatch.delenv(name, raising=False)
  17. def test_paas_is_optional(monkeypatch):
  18. _clear(monkeypatch)
  19. assert paas_status()["configured"] is False
  20. assert record_agent_run(
  21. "asset-construction-agent", input_summary={}, output_summary={}
  22. ) == {"role": "asset-construction-agent", "status": "not_configured"}
  23. def test_paas_records_only_role_summary_when_configured(monkeypatch):
  24. _clear(monkeypatch)
  25. monkeypatch.setenv("AGENTPAAS_BASE_URL", "https://paas.example.cn")
  26. monkeypatch.setenv("AGENTPAAS_API_KEY", "paas-secret")
  27. monkeypatch.setenv("ONTOREFACTOR_PAAS_ASSET_AGENT_ID", "agent-asset")
  28. captured = {}
  29. def fake_urlopen(request, timeout):
  30. captured["url"] = request.full_url
  31. captured["authorization"] = request.get_header("Authorization")
  32. captured["payload"] = json.loads(request.data)
  33. captured["timeout"] = timeout
  34. return FakeResponse()
  35. monkeypatch.setattr("urllib.request.urlopen", fake_urlopen)
  36. result = record_agent_run(
  37. "asset-construction-agent",
  38. input_summary={"build_id": "ob_1", "source_count": 4},
  39. output_summary={"elements": 42},
  40. duration_ms=12,
  41. )
  42. assert result == {"role": "asset-construction-agent", "status": "recorded", "run_id": "paas-run-1"}
  43. assert captured["url"] == "https://paas.example.cn/api/v1/agents/agent-asset/runs/record"
  44. assert captured["authorization"] == "Bearer paas-secret"
  45. assert captured["payload"]["source"] == "ontorefactor-governance"
  46. assert "ob_1" in captured["payload"]["input"]
  47. assert captured["timeout"] == 5