""" 复制工单号页:token 不带工单号,打开页能看到工单号,过期给 410。 """ 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("YTD_ENV", "test") os.environ.setdefault("REDIS_BACKEND", "memory") os.environ.setdefault("CHECKPOINT_BACKEND", "memory") os.environ.setdefault("MESSAGE_STORE_BACKEND", "memory") os.environ.setdefault("LEDGER_BACKEND", "memory") from fastapi import FastAPI from fastapi.testclient import TestClient from agent.channel.h5 import router as h5_router from agent.channel.h5.copy_page import render_copy_page from agent.channel.h5.copy_store import build_copy_ticket_url, lookup_copy_token class CopyTicketH5Tests(unittest.TestCase): def test_token_roundtrip_and_page(self) -> None: url = build_copy_ticket_url("WO202609150001") self.assertIn("/inquiry-form/copy/", url) token = url.rstrip("/").rsplit("/", 1)[-1] self.assertEqual(lookup_copy_token(token), "WO202609150001") self.assertNotIn("WO202609150001", token) html = render_copy_page("WO202609150001") self.assertIn("WO202609150001", html) self.assertIn("setClipboardData", html) def test_http_copy_page(self) -> None: url = build_copy_ticket_url("WO202609150002") token = url.rstrip("/").rsplit("/", 1)[-1] app = FastAPI() app.include_router(h5_router) client = TestClient(app) hit = client.get(f"/inquiry-form/copy/{token}") self.assertEqual(hit.status_code, 200) self.assertIn("WO202609150002", hit.text) miss = client.get("/inquiry-form/copy/not-a-real-token") self.assertEqual(miss.status_code, 410) self.assertIn("过期", miss.text) if __name__ == "__main__": unittest.main()