package jnpf.elnService.template;
|
|
import jnpf.util.JsonUtil;
|
import org.junit.Test;
|
|
import java.util.LinkedHashMap;
|
import java.util.Map;
|
|
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.fail;
|
|
public class TemplateAnnotationTicketServiceTest {
|
|
@Test
|
public void parsesEverySignedBinding() {
|
TemplateAnnotationTicketService service = service(validPayload());
|
|
TemplateAnnotationTicketService.AnnotationTicketContext context = service.parse("ticket-1");
|
|
assertEquals("tenant-a", context.getTenantId());
|
assertEquals("user-1", context.getUserId());
|
assertEquals("template-1", context.getTemplateId());
|
assertEquals("file-1", context.getFileId());
|
}
|
|
@Test
|
public void rejectsWrongScopeSceneAndGuid() {
|
assertInvalid(payload("scope", "onlyoffice:eln-template-fill"));
|
assertInvalid(payload("bizScene", "eln.template.fill"));
|
assertInvalid(payload("pluginGuid", "asc.{OTHER}"));
|
}
|
|
@Test
|
public void rejectsEveryMissingOrBlankBinding() {
|
String[] keys = {"scope", "tenantId", "userId", "fileId", "bizDataId", "bizModule", "bizScene",
|
"pluginGuid"};
|
for (String key : keys) {
|
Map<String, String> missing = validPayload();
|
missing.remove(key);
|
assertInvalid(missing);
|
assertInvalid(payload(key, " "));
|
}
|
}
|
|
@Test
|
public void rejectsExpiredAndLegacyPayloads() {
|
assertInvalid(new TemplateAnnotationTicketService(ticket -> null));
|
assertInvalid(new TemplateAnnotationTicketService(ticket -> validPayload()));
|
assertInvalid(new TemplateAnnotationTicketService(ticket -> "null"));
|
}
|
|
private TemplateAnnotationTicketService service(Map<String, String> payload) {
|
return new TemplateAnnotationTicketService(ticket -> JsonUtil.getObjectToString(payload));
|
}
|
|
private Map<String, String> payload(String key, String value) {
|
Map<String, String> payload = validPayload();
|
payload.put(key, value);
|
return payload;
|
}
|
|
private void assertInvalid(Map<String, String> payload) {
|
assertInvalid(service(payload));
|
}
|
|
private void assertInvalid(TemplateAnnotationTicketService service) {
|
try {
|
service.parse("ticket-1");
|
fail("expected invalid annotation ticket");
|
} catch (TemplateAnnotationTicketService.InvalidAnnotationTicketException e) {
|
assertEquals(401, e.getStatus());
|
}
|
}
|
|
private Map<String, String> validPayload() {
|
Map<String, String> payload = new LinkedHashMap<>();
|
payload.put("scope", "onlyoffice:eln-template-annotate");
|
payload.put("tenantId", "tenant-a");
|
payload.put("userId", "user-1");
|
payload.put("fileId", "file-1");
|
payload.put("bizDataId", "template-1");
|
payload.put("bizModule", "eln.template");
|
payload.put("bizScene", "eln.template.annotate");
|
payload.put("pluginGuid", "asc.{2D6D6CB6-F6FC-45B7-8EC7-0CC1940F1A6F}");
|
return payload;
|
}
|
}
|