package jnpf.bizcommon.onlyoffice.service.impl; import jnpf.base.UserInfo; import jnpf.bizcommon.onlyoffice.entity.DmsPrintRenderRequest; import jnpf.dmsEntity.preview.model.DmsFilePreviewTicket; import jnpf.exception.DataException; import jnpf.util.JsonUtil; import org.junit.Test; import java.util.UUID; import static org.junit.Assert.assertEquals; public class DmsOnlyOfficePrintTicketValidatorTest { private static final UUID VERSION_ID = UUID.fromString("018f0000-0000-7000-8000-000000000702"); @Test public void acceptsPrintTicketBoundToCurrentRequest() { DmsFilePreviewTicket result = validator(payload(DmsFilePreviewTicket.PRINT_SCOPE)) .validate(request(), user("tenant-1", "user-1")); assertEquals(VERSION_ID, result.getFileVersionId()); } @Test(expected = DataException.class) public void rejectsPreviewTicket() { validator(payload(DmsFilePreviewTicket.SCOPE)) .validate(request(), user("tenant-1", "user-1")); } @Test(expected = DataException.class) public void rejectsMismatchedFileName() { DmsPrintRenderRequest request = request(); request.setFileName("another.docx"); validator(payload(DmsFilePreviewTicket.PRINT_SCOPE)) .validate(request, user("tenant-1", "user-1")); } private DmsOnlyOfficePrintTicketValidator validator(DmsFilePreviewTicket payload) { String json = JsonUtil.getObjectToString(payload); return new DmsOnlyOfficePrintTicketValidator(ticket -> json); } private DmsFilePreviewTicket payload(String scope) { DmsFilePreviewTicket payload = new DmsFilePreviewTicket(); payload.setScope(scope); payload.setTenantId("tenant-1"); payload.setUserId("user-1"); payload.setFileVersionId(VERSION_ID); payload.setFileName("quality-manual.docx"); payload.setStoragePlatform("seaweedfs-1"); payload.setBucketName("jnpf-dms"); payload.setObjectPath("2026/08/24/document/"); payload.setObjectName("quality-manual-v1.docx"); payload.setExpiresAt(System.currentTimeMillis() + 60_000L); return payload; } private DmsPrintRenderRequest request() { DmsPrintRenderRequest request = new DmsPrintRenderRequest(); request.setAccessTicket("ticket"); request.setFileVersionId(VERSION_ID); request.setFileName("quality-manual.docx"); return request; } private UserInfo user(String tenantId, String userId) { UserInfo user = new UserInfo(); user.setTenantId(tenantId); user.setUserId(userId); return user; } }