package jnpf.dmsService; import jnpf.base.ActionResult; import jnpf.dms.DmsTicketLifecycleApi; import jnpf.dms.DmsTicketLifecycleChecks; import jnpf.dmsEntity.center.DmsTicketLifecycleRequest; import jnpf.exception.DataException; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; class DmsTicketLifecycleChecksTest { DmsTicketLifecycleApi api=mock(DmsTicketLifecycleApi.class); UUID version=UUID.randomUUID(); @Test void forwardsTenantVersionAndExplicitHistoricalContext() { ActionResult ok=new ActionResult<>();ok.setCode(200);ok.setData(true); when(api.readable(eq("jnpf-file"),any())).thenReturn(ok); DmsTicketLifecycleChecks.require(api,"jnpf-file","tenant",version,true); ArgumentCaptor request=ArgumentCaptor.forClass(DmsTicketLifecycleRequest.class); verify(api).readable(eq("jnpf-file"),request.capture()); assertEquals("tenant",request.getValue().getTenantId());assertEquals(version,request.getValue().getFileVersionId()); assertTrue(request.getValue().isHistoricalAccess()); } @Test void deniedMissingAndFailedResponsesNeverPermitAnOldTicket() { ActionResult denied=new ActionResult<>();denied.setCode(200);denied.setData(false); ActionResult failed=new ActionResult<>();failed.setCode(503);failed.setData(true); when(api.readable(any(),any())).thenReturn(null,denied,failed).thenThrow(new IllegalStateException("offline")); for(int i=0;i<3;i++)assertThrows(DataException.class,()->DmsTicketLifecycleChecks.require(api,"jnpf-file","tenant",version,false)); assertThrows(IllegalStateException.class,()->DmsTicketLifecycleChecks.require(api,"jnpf-file","tenant",version,false)); } }