Files
wehub-resource-sync 5a558eb09e
TypeScript SDK Compatibility V1.x E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / TypeScript SDK Compatibility V1.x E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
TypeScript SDK E2E Tests / TypeScript SDK E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
Python SDK E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK E2E Tests / Python SDK E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK E2E Tests / build-opik (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Python SDK Compatibility V1.x E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK E2E Tests / build-opik (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer E2E Tests Python ${{matrix.python_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer Integration Smoke Tests (push) Has been cancelled
🐙 Code Quality / detect (push) Has been cancelled
🐙 Code Quality / lint (${{ matrix.leg.name }}) (push) Has been cancelled
🐙 Code Quality / summary (push) Has been cancelled
TypeScript SDK Library Integration Tests / Check Secrets (push) Has been cancelled
TypeScript SDK Library Integration Tests / opik-vercel (Vercel AI SDK / eve) (push) Has been cancelled
SDK Library Integration Tests Runner / Check Secrets (push) Has been cancelled
SDK Library Integration Tests Runner / Missed OpenAI API Key Warning (push) Has been cancelled
SDK Library Integration Tests Runner / Build (push) Has been cancelled
SDK Library Integration Tests Runner / openai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_legacy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / llama_index_tests (push) Has been cancelled
SDK Library Integration Tests Runner / anthropic_tests (push) Has been cancelled
SDK Library Integration Tests Runner / mistral_tests (push) Has been cancelled
SDK Library Integration Tests Runner / groq_tests (push) Has been cancelled
SDK Library Integration Tests Runner / aisuite_tests (push) Has been cancelled
SDK Library Integration Tests Runner / haystack_tests (push) Has been cancelled
SDK Library Integration Tests Runner / dspy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v1_tests (push) Has been cancelled
SDK Library Integration Tests Runner / genai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_legacy_1_3_0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / evaluation_metrics_tests (push) Has been cancelled
SDK Library Integration Tests Runner / bedrock_tests (push) Has been cancelled
SDK Library Integration Tests Runner / litellm_tests (push) Has been cancelled
SDK Library Integration Tests Runner / harbor_tests (push) Has been cancelled
SDK Library Integration Tests Runner / Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / render-equality (push) Has been cancelled
Opik Optimizer - Unit Tests / Opik Optimizer Unit Tests Python ${{matrix.python_version}} (push) Has been cancelled
Python BE E2E Tests / Python BE E2E (push) Has been cancelled
Python Backend Tests / run-python-backend-tests (push) Has been cancelled
Python SDK Unit Tests / Python SDK Unit Tests ${{matrix.python_version}} (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
SDK E2E Libraries Integration Tests / Check Secrets (push) Has been cancelled
SDK E2E Libraries Integration Tests / Missed OpenAI API Key Warning (push) Has been cancelled
SDK E2E Libraries Integration Tests / build-opik (push) Has been cancelled
SDK E2E Libraries Integration Tests / E2E Lib Integration Python ${{matrix.python_version}} (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-gemini) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-langchain) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-openai) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-otel) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-vercel) (push) Has been cancelled
TypeScript SDK Build & Publish / build-and-publish (push) Has been cancelled
TypeScript SDK Unit Tests / Test on Node ${{ matrix.node-version }} (push) Has been cancelled
Backend Tests / discover-tests (push) Has been cancelled
Backend Tests / ${{ matrix.name }} (push) Has been cancelled
Build and Publish SDK / build-and-publish (push) Has been cancelled
Build Opik Docker Images / set-version (push) Has been cancelled
Build Opik Docker Images / build-backend (push) Has been cancelled
Build Opik Docker Images / build-sandbox-executor-python (push) Has been cancelled
Build Opik Docker Images / build-python-backend (push) Has been cancelled
Build Opik Docker Images / build-frontend (push) Has been cancelled
Build Opik Docker Images / create-git-tag (push) Has been cancelled
ClickHouse Migration Cluster Check / validate-clickhouse-migrations (push) Has been cancelled
Docs - Publish / run (push) Has been cancelled
E2E Tests - Post Merge (v2) / 🧪 E2E v2 Tests (${{ github.event.inputs.tier || 't1' }}) (push) Has been cancelled
E2E Tests - Post Merge (v2) / 📢 Slack Notification (push) Has been cancelled
Frontend Unit Tests / Test on Node 20 (push) Has been cancelled
Guardrails E2E Tests / Select Python version matrix (push) Has been cancelled
Guardrails E2E Tests / Guardrails E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Guardrails E2E Tests / 📢 Slack Notification (push) Has been cancelled
Guardrails Backend Unit Tests / Guardrails Backend Unit Tests (push) Has been cancelled
Guardrails Backend Unit Tests / 📢 Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v3.21.0) (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v4.2.0) (push) Has been cancelled
Lint Opik Helm Chart / unittest-helm-chart (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:25:44 +08:00

138 lines
3.9 KiB
Python

import httpx
from opik.configurator.mcp import detection
BASE_URL = "https://dev.comet.com/"
API_URL = "https://dev.comet.com/opik/api/"
WELL_KNOWN_URL = "https://dev.comet.com/.well-known/oauth-authorization-server/opik"
MCP_URL = "https://dev.comet.com/opik/api/v1/mcp"
_VALID_METADATA = {
"issuer": "https://dev.comet.com/opik",
"authorization_endpoint": "https://dev.comet.com/opik/oauth/authorize",
"token_endpoint": "https://dev.comet.com/opik/oauth/token",
}
class _Response:
def __init__(self, status_code, json_data=None, json_error=False):
self.status_code = status_code
self._json_data = json_data
self._json_error = json_error
def json(self):
if self._json_error:
raise ValueError("Expecting value")
return self._json_data
def _patch_client(monkeypatch, *, response=None, error=None):
"""Wire ``httpx_client.get`` to a fake client, capturing the probe URL and the
client kwargs (so tests can assert the TLS flag is forwarded)."""
captured = {}
class _Client:
def __enter__(self):
return self
def __exit__(self, *exc):
return False
def get(self, url, timeout=None):
captured["url"] = url
captured["timeout"] = timeout
if error is not None:
raise error
return response
def fake_get(**kwargs):
captured["client_kwargs"] = kwargs
return _Client()
monkeypatch.setattr(detection.httpx_client, "get", fake_get)
return captured
def test_detect__valid_oauth_metadata__returns_mcp_url(monkeypatch):
captured = _patch_client(
monkeypatch, response=_Response(200, json_data=_VALID_METADATA)
)
result = detection.detect_hosted_mcp_server(
base_url=BASE_URL, api_url=API_URL, check_tls_certificate=True
)
assert result == MCP_URL
assert captured["url"] == WELL_KNOWN_URL
def test_detect__forwards_tls_flag_without_rereading_config(monkeypatch):
captured = _patch_client(
monkeypatch, response=_Response(200, json_data=_VALID_METADATA)
)
detection.detect_hosted_mcp_server(
base_url=BASE_URL, api_url=API_URL, check_tls_certificate=False
)
assert captured["client_kwargs"]["check_tls_certificate"] is False
def test_detect__html_catch_all_200__returns_none(monkeypatch):
# The frontend SPA answers any unknown path with HTML and a 200 status.
_patch_client(monkeypatch, response=_Response(200, json_error=True))
result = detection.detect_hosted_mcp_server(
base_url=BASE_URL, api_url=API_URL, check_tls_certificate=True
)
assert result is None
def test_detect__not_found__returns_none(monkeypatch):
_patch_client(
monkeypatch, response=_Response(404, json_data={"error": "not_found"})
)
assert (
detection.detect_hosted_mcp_server(
base_url=BASE_URL, api_url=API_URL, check_tls_certificate=True
)
is None
)
def test_detect__json_without_authorization_endpoint__returns_none(monkeypatch):
_patch_client(
monkeypatch, response=_Response(200, json_data={"unrelated": "value"})
)
assert (
detection.detect_hosted_mcp_server(
base_url=BASE_URL, api_url=API_URL, check_tls_certificate=True
)
is None
)
def test_detect__non_dict_json__returns_none(monkeypatch):
_patch_client(monkeypatch, response=_Response(200, json_data=["not", "a", "dict"]))
assert (
detection.detect_hosted_mcp_server(
base_url=BASE_URL, api_url=API_URL, check_tls_certificate=True
)
is None
)
def test_detect__network_error__returns_none(monkeypatch):
_patch_client(monkeypatch, error=httpx.ConnectError("unreachable"))
assert (
detection.detect_hosted_mcp_server(
base_url=BASE_URL, api_url=API_URL, check_tls_certificate=True
)
is None
)