From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-eln/jnpf-eln-biz/src/test/java/jnpf/elnService/TemplateFillTicketServiceTest.java |   61 ++++++++++++++++++++++++++++++
 1 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/jnpf-eln/jnpf-eln-biz/src/test/java/jnpf/elnService/TemplateFillTicketServiceTest.java b/jnpf-eln/jnpf-eln-biz/src/test/java/jnpf/elnService/TemplateFillTicketServiceTest.java
new file mode 100644
index 0000000..16c2d88
--- /dev/null
+++ b/jnpf-eln/jnpf-eln-biz/src/test/java/jnpf/elnService/TemplateFillTicketServiceTest.java
@@ -0,0 +1,61 @@
+package jnpf.elnService;
+
+import jnpf.util.JsonUtil;
+import org.junit.Test;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+
+public class TemplateFillTicketServiceTest {
+
+    @Test
+    public void parsesStrictBoundContext() {
+        TemplateFillTicketService service = new TemplateFillTicketService(ticket -> JsonUtil.getObjectToString(validPayload()));
+
+        TemplateFillTicketService.FillTicketContext context = service.parse("ticket-1");
+
+        assertEquals("tenant-1", context.getTenantId());
+        assertEquals("user-1", context.getUserId());
+        assertEquals("file-1", context.getFileId());
+        assertEquals("record-1", context.getBizDataId());
+    }
+
+    @Test(expected = TemplateFillTicketService.InvalidFillTicketException.class)
+    public void rejectsWrongScope() {
+        Map<String, String> payload = validPayload();
+        payload.put("scope", "other");
+        new TemplateFillTicketService(ticket -> JsonUtil.getObjectToString(payload)).parse("ticket-1");
+    }
+
+    @Test(expected = TemplateFillTicketService.InvalidFillTicketException.class)
+    public void rejectsMissingBinding() {
+        Map<String, String> payload = validPayload();
+        payload.remove("tenantId");
+        new TemplateFillTicketService(ticket -> JsonUtil.getObjectToString(payload)).parse("ticket-1");
+    }
+
+    @Test(expected = TemplateFillTicketService.InvalidFillTicketException.class)
+    public void rejectsExpiredTicket() {
+        new TemplateFillTicketService(ticket -> null).parse("ticket-1");
+    }
+
+    @Test(expected = TemplateFillTicketService.InvalidFillTicketException.class)
+    public void rejectsLegacyMapPayload() {
+        new TemplateFillTicketService(ticket -> validPayload()).parse("ticket-1");
+    }
+
+    private Map<String, String> validPayload() {
+        Map<String, String> payload = new LinkedHashMap<>();
+        payload.put("scope", "onlyoffice:eln-template-fill");
+        payload.put("tenantId", "tenant-1");
+        payload.put("userId", "user-1");
+        payload.put("fileId", "file-1");
+        payload.put("bizDataId", "record-1");
+        payload.put("bizModule", "eln.template");
+        payload.put("bizScene", "eln.template.fill");
+        payload.put("pluginGuid", "asc.{7F4E8F35-5D66-47F8-A5B4-6AB3FAACF565}");
+        return payload;
+    }
+}

--
Gitblit v1.8.0