package jnpf.fileStorage.dms;
|
|
import jnpf.dms.DmsPersistentPdfRecoveryApi;
|
import jnpf.dmsEntity.preview.model.DmsFilePreviewTicket;
|
import jnpf.dmsEntity.storage.form.DmsPersistentPdfInvalidationForm;
|
import jnpf.dmsEntity.storage.model.DmsPersistentPdfSource;
|
import org.junit.Test;
|
import org.mockito.ArgumentCaptor;
|
|
import java.util.UUID;
|
|
import static org.junit.Assert.assertEquals;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.when;
|
|
public class DmsPersistentPdfRecoveryReporterTest {
|
@Test
|
public void sendsBoundInvalidationAndSwallowsRemoteFailure() {
|
DmsPersistentPdfRecoveryApi api = mock(DmsPersistentPdfRecoveryApi.class);
|
DmsPersistentPdfRecoveryReporter reporter = new DmsPersistentPdfRecoveryReporter(api);
|
UUID versionId = UUID.randomUUID();
|
DmsPersistentPdfSource source = new DmsPersistentPdfSource();
|
source.setObjectKey("dms-derived/pdf/version/source.pdf");
|
source.setSourceChecksumSha256("a".repeat(64));
|
DmsFilePreviewTicket ticket = new DmsFilePreviewTicket();
|
ticket.setTenantId("tenant-1");
|
ticket.setFileVersionId(versionId);
|
ticket.setPdfSource(source);
|
when(api.invalidate(anyString(), any())).thenThrow(new RuntimeException("offline"));
|
|
reporter.report(ticket, "missing");
|
|
ArgumentCaptor<DmsPersistentPdfInvalidationForm> form =
|
ArgumentCaptor.forClass(DmsPersistentPdfInvalidationForm.class);
|
verify(api).invalidate(eq("jnpf-file"), form.capture());
|
assertEquals("tenant-1", form.getValue().getTenantId());
|
assertEquals(versionId, form.getValue().getFileVersionId());
|
assertEquals(source.getObjectKey(), form.getValue().getObjectKey());
|
assertEquals(source.getSourceChecksumSha256(), form.getValue().getSourceChecksumSha256());
|
}
|
}
|