package jnpf.elnService; import jnpf.util.JsonUtil; import org.junit.Test; import java.util.LinkedHashMap; import java.util.Map; import static org.junit.Assert.assertEquals; public class ElnRecordFillTicketServiceTest { @Test public void recordFillTicketUsesTheCanonicalRecordContext() { Map payload = validPayload(); ElnRecordFillTicketService service = new ElnRecordFillTicketService( ticket -> JsonUtil.getObjectToString(payload)); ElnRecordFillTicketService.FillTicketContext context = service.parse("ticket-1"); assertEquals("eln.record", context.getBizModule()); assertEquals("eln.record.fill", context.getBizScene()); } @Test public void parsesStrictBoundContext() { ElnRecordFillTicketService service = new ElnRecordFillTicketService(ticket -> JsonUtil.getObjectToString(validPayload())); ElnRecordFillTicketService.FillTicketContext context = service.parse("ticket-1"); assertEquals("tenant-1", context.getTenantId()); assertEquals("user-1", context.getUserId()); assertEquals("file-1", context.getFileId()); assertEquals("record-1", context.getBizDataId()); } @Test(expected = ElnRecordFillTicketService.InvalidFillTicketException.class) public void rejectsWrongScope() { Map payload = validPayload(); payload.put("scope", "other"); new ElnRecordFillTicketService(ticket -> JsonUtil.getObjectToString(payload)).parse("ticket-1"); } @Test(expected = ElnRecordFillTicketService.InvalidFillTicketException.class) public void rejectsTheRetiredTemplateFillContext() { Map payload = validPayload(); payload.put("scope", "onlyoffice:eln-template-fill"); payload.put("bizModule", "eln.template"); payload.put("bizScene", "eln.template.fill"); new ElnRecordFillTicketService(ticket -> JsonUtil.getObjectToString(payload)).parse("ticket-1"); } @Test(expected = ElnRecordFillTicketService.InvalidFillTicketException.class) public void rejectsMissingBinding() { Map payload = validPayload(); payload.remove("tenantId"); new ElnRecordFillTicketService(ticket -> JsonUtil.getObjectToString(payload)).parse("ticket-1"); } @Test(expected = ElnRecordFillTicketService.InvalidFillTicketException.class) public void rejectsExpiredTicket() { new ElnRecordFillTicketService(ticket -> null).parse("ticket-1"); } @Test(expected = ElnRecordFillTicketService.InvalidFillTicketException.class) public void rejectsLegacyMapPayload() { new ElnRecordFillTicketService(ticket -> validPayload()).parse("ticket-1"); } private Map validPayload() { Map payload = new LinkedHashMap<>(); payload.put("scope", "onlyoffice:eln-record-fill"); payload.put("tenantId", "tenant-1"); payload.put("userId", "user-1"); payload.put("fileId", "file-1"); payload.put("bizDataId", "record-1"); payload.put("bizModule", "eln.record"); payload.put("bizScene", "eln.record.fill"); payload.put("pluginGuid", "asc.{7F4E8F35-5D66-47F8-A5B4-6AB3FAACF565}"); return payload; } }