package jnpf.bizcommon.onlyoffice.service.impl; import jnpf.base.UserInfo; import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeConfigParam; import jnpf.util.JsonUtil; import org.junit.Test; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; public class OnlyOfficeAnnotateTicketIssuerTest { private static final String PLUGIN_GUID = "asc.{2D6D6CB6-F6FC-45B7-8EC7-0CC1940F1A6F}"; @Test public void buildsFullyBoundPayloadWithEightHourTtl() { OnlyOfficeAnnotateTicketIssuer issuer = new OnlyOfficeAnnotateTicketIssuer(); UserInfo user = user("tenant-a", "user-1"); Map payload = payload(issuer.buildPayload(param(), user, PLUGIN_GUID)); assertEquals(8L * 60L * 60L, OnlyOfficeAnnotateTicketIssuer.TTL_SECONDS); assertEquals("onlyoffice:eln-template-annotate", payload.get("scope")); assertEquals("tenant-a", payload.get("tenantId")); assertEquals("user-1", payload.get("userId")); assertEquals("template-1", payload.get("bizDataId")); assertEquals("file-1", payload.get("fileId")); assertEquals("eln.template", payload.get("bizModule")); assertEquals("eln.template.annotate", payload.get("bizScene")); assertEquals(PLUGIN_GUID, payload.get("pluginGuid")); assertEquals(8, payload.size()); assertFalse(payload.containsKey("permissionButtonCode")); } @Test public void onlyBlankTenantFallsBackToZero() { OnlyOfficeAnnotateTicketIssuer issuer = new OnlyOfficeAnnotateTicketIssuer(); assertEquals("0", payload(issuer.buildPayload(param(), user("", "user-1"), PLUGIN_GUID)) .get("tenantId")); assertEquals("tenant-b", payload(issuer.buildPayload(param(), user("tenant-b", "user-1"), PLUGIN_GUID)) .get("tenantId")); } @Test(expected = IllegalArgumentException.class) public void rejectsMissingTicketBinding() { OnlyOfficeConfigParam param = param(); param.setFileId(null); new OnlyOfficeAnnotateTicketIssuer().buildPayload( param, user("tenant-a", "user-1"), PLUGIN_GUID); } private OnlyOfficeConfigParam param() { OnlyOfficeConfigParam param = new OnlyOfficeConfigParam(); param.setFileId("file-1"); param.setBizDataId("template-1"); param.setBizModule("eln.template"); param.setBizScene("eln.template.annotate"); return param; } private UserInfo user(String tenantId, String userId) { UserInfo user = new UserInfo(); user.setTenantId(tenantId); user.setUserId(userId); return user; } @SuppressWarnings("unchecked") private Map payload(String serializedPayload) { return JsonUtil.getJsonToBean(serializedPayload, Map.class); } }