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<String, String> 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<String, String> payload(String serializedPayload) {
|
return JsonUtil.getJsonToBean(serializedPayload, Map.class);
|
}
|
}
|