Files
kamidso-back/tests/kamidso/test_connector_product.py
T
javadandCursor edbaa2acec Add native Didar connectors so chats can query CRM data reliably.
Connector calls, semantic rules, and DuckDB memory keep long runs stable, and stream retry stops chats from stalling.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 19:26:47 +03:30

75 lines
2.7 KiB
Python

"""Product-facing connector payloads stay free of secrets."""
from kamidso.contracts.user import CurrentUser
from kamidso.engine.serve.connector.service.service import ConnectorResponse
from kamidso.native_connectors.ux import connector_test_message, public_connector
def test_probe_messages_are_persian_and_drop_the_remote_body():
ok = connector_test_message({"success": True, "message": "Connection successful"})
assert ok == {"success": True, "message": "اتصال برقرار شد."}
denied = connector_test_message(
{
"success": False,
"status_code": 401,
"error_type": "authentication_error",
"message": "apikey=super-secret",
}
)
assert denied["success"] is False
assert denied["status_code"] == 401
assert "super-secret" not in denied["message"]
assert "کلید API" in denied["message"]
limited = connector_test_message({"success": False, "status_code": 429})
assert "محدودیت" in limited["message"]
remote = connector_test_message({"success": False, "status_code": 503})
assert "سرویس دیدار" in remote["message"]
offline = connector_test_message({"success": False, "error_type": "transport_error"})
assert offline["message"] == "ارتباط با دیدار برقرار نشد."
assert "status_code" not in offline
def test_public_connector_hides_config_secrets():
row = ConnectorResponse(
connector_id="conn_1",
connector_type="didar",
display_name="دیدار فروش",
status="active",
config={"api_key": "super-secret", "last_tested_at": "2026-10-12T09:00:00Z", "last_test_success": True},
)
public = public_connector(row)
assert public["has_credentials"] is True
assert public["connector_kind"] == "native"
assert public["last_tested_at"] == "2026-10-12T09:00:00Z"
assert "super-secret" not in str(public)
assert "api_key" not in public
assert "config" not in public
def test_authorize_connector_rejects_another_workspace(monkeypatch):
from kamidso.resources.registry import _authorize_connector
monkeypatch.setattr(
"kamidso.native_connectors.resolve.load_public_instance",
lambda connector_id: {
"connector_id": connector_id,
"connector_type": "didar",
"display_name": "دیدار فروش",
"status": "active",
"user_name": "usr_1",
"sys_code": "ws_a",
},
)
user = CurrentUser(
id="usr_1",
email="a@kamidso.test",
name="A",
role="user",
workspace_id="ws_b",
)
assert _authorize_connector(user, "conn_1") is None