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;
|
}
|
}
|