Files
inquiry_robot/inquiry-agent/tests/test_http_ledger.py
T
jillion886andCursor 99da1faf30 落地私聊空运询价与TMS报价回填,按后台模板出单。
查到价后把币种、单位、数量、单价、备注写入报价单,避免销售只看到光秃秃的金额。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 20:25:35 +08:00

51 lines
1.8 KiB
Python

"""HttpLedger 只测 Jeecg 包装解析,不打 8180 / TMS。"""
from __future__ import annotations
import os
import sys
import unittest
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if ROOT not in sys.path:
sys.path.insert(0, ROOT)
os.environ.setdefault("LEDGER_BACKEND", "memory")
from agent.ledger.http_ledger import _unwrap
from agent.schema.fingerprint import ascii_idempotency_key, inquiry_fingerprint
class HttpLedgerParseTests(unittest.TestCase):
def test_unwrap_jeecg_ok(self) -> None:
inner = _unwrap({"success": True, "result": {"ok": True, "has_price": True, "classification": "HAS_PRICE"}})
self.assertTrue(inner["ok"])
self.assertEqual(inner["classification"], "HAS_PRICE")
def test_unwrap_jeecg_fail(self) -> None:
inner = _unwrap({"success": False, "message": "unauthorized", "result": {}})
self.assertFalse(inner["ok"])
def test_chinese_fingerprint_header_is_ascii(self) -> None:
raw = inquiry_fingerprint(
{"起运港": "上海", "目的港": "洛杉矶", "品名": "普货", "毛重": "100", "体积": "1"},
business_line="AIR",
)
key = ascii_idempotency_key(raw)
key.encode("ascii")
self.assertTrue(key.startswith("sha256:"))
self.assertEqual(ascii_idempotency_key("tms:WO1"), "tms:WO1")
def test_service_token_not_sent_as_jwt(self) -> None:
from agent.ledger import LedgerClient
client = LedgerClient(base_url="http://127.0.0.1:8180/jeecgboot", service_token="not-a-jwt")
headers = client._http().headers
self.assertEqual(headers.get("X-Agent-Token"), "not-a-jwt")
self.assertFalse(headers.get("X-Access-Token"))
client.close()
if __name__ == "__main__":
unittest.main()