mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 21:26:39 +00:00
* feat(knowledge): add optional ingestion and processing extension * fix(knowledge): address catalog and ingestion review regressions * fix(knowledge): add sanitized provider diagnostics and Chinese docs * fix(knowledge): align capabilities and repair catalog e2e assertions
40 lines
1.8 KiB
Python
40 lines
1.8 KiB
Python
"""Management performs SSL trust loading outside the Gateway event loop."""
|
|
|
|
import asyncio
|
|
import ssl
|
|
from pathlib import Path
|
|
|
|
import httpx
|
|
import pytest
|
|
from deerflow_extension_api.auth import ExtensionPrincipal
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_management_http_client_setup_is_off_loop(monkeypatch):
|
|
monkeypatch.syspath_prepend(str(Path(__file__).resolve().parents[3] / "examples/deerflow-extension-knowledge-management"))
|
|
from deerflow_extension_knowledge_management.contracts import IngestRequest, ManagementContext
|
|
from deerflow_extension_knowledge_management.weknora import WeKnoraManagement
|
|
|
|
monkeypatch.setenv("MANAGEMENT_BLOCKING_KEY", "synthetic")
|
|
provider = WeKnoraManagement(
|
|
{"connections": [{"id": "test", "base_url": "https://weknora.invalid", "tenant_id": "1", "api_key_env": "MANAGEMENT_BLOCKING_KEY", "grants": [{"user_id": "alice", "knowledge_base_ids": ["kb"], "operations": ["manual"]}]}]}
|
|
)
|
|
|
|
async def send(self, request, **kwargs):
|
|
data = {"id": "kb", "capabilities": {}} if request.method == "GET" else {"id": "doc", "knowledge_base_id": "kb", "parse_status": "pending", "enable_status": "enabled"}
|
|
return httpx.Response(200, request=request, json={"success": True, "data": data})
|
|
|
|
original = ssl.create_default_context
|
|
|
|
def ssl_context(*args, **kwargs):
|
|
try:
|
|
asyncio.get_running_loop()
|
|
except RuntimeError:
|
|
return original(*args, **kwargs)
|
|
raise AssertionError("SSL trust loading must run off the event loop")
|
|
|
|
monkeypatch.setattr(ssl, "create_default_context", ssl_context)
|
|
monkeypatch.setattr(httpx.AsyncClient, "send", send)
|
|
result = await provider.ingest(ManagementContext(ExtensionPrincipal("alice", is_admin=True)), "test", "kb", IngestRequest(kind="manual", title="Guide", content="Evidence"))
|
|
assert result.state == "queued"
|