diff --git a/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/AbstractTest.java b/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/AbstractTest.java index 7aceb64..f003262 100644 --- a/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/AbstractTest.java +++ b/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/AbstractTest.java @@ -4,7 +4,10 @@ import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -21,6 +24,8 @@ import org.springframework.context.annotation.Primary; import org.springframework.test.context.junit.jupiter.SpringExtension; import com.iqser.red.service.ocr.v1.server.initializer.PDFNetInitializer; +import com.iqser.red.service.ocr.v1.server.service.DossierService; +import com.iqser.red.service.ocr.v1.server.service.DossierTemplateService; import com.iqser.red.service.ocr.v1.server.utils.FileSystemBackedStorageService; import com.iqser.red.storage.commons.StorageAutoConfiguration; import com.iqser.red.storage.commons.service.StorageService; @@ -30,14 +35,21 @@ import com.pdftron.pdf.PDFNet; import jakarta.annotation.PostConstruct; import lombok.SneakyThrows; -@ExtendWith(SpringExtension.class) +@ExtendWith({SpringExtension.class, MockitoExtension.class}) @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Import({AbstractTest.TestConfiguration.class, PDFNetInitializer.class}) @AutoConfigureObservability public class AbstractTest { + protected static final String TEST_DOSSIER_TEMPLATE_ID = "1337"; + protected static final String TEST_DOSSIER_ID = "42"; + @MockBean private TenantsClient tenantsClient; + @MockBean + protected DossierService dossierService; + @MockBean + protected DossierTemplateService dossierTemplateService; @Autowired protected StorageService storageService; @@ -47,15 +59,25 @@ public class AbstractTest { private static String pdftronLicense; + + @BeforeEach + public void openMocks() { + + MockitoAnnotations.openMocks(this); + } + + @PostConstruct @SneakyThrows public void init() { + PDFNet.initialize(pdftronLicense); } @AfterAll public static void terminatePDFNet() { + PDFNet.terminate(); System.out.println("PDFNet Terminated"); } @@ -78,10 +100,9 @@ public class AbstractTest { } - @Configuration @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) - @ComponentScan(excludeFilters={@ComponentScan.Filter(type= FilterType.ASSIGNABLE_TYPE, value=StorageAutoConfiguration.class)}) + @ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = StorageAutoConfiguration.class)}) public static class TestConfiguration { @Bean @@ -92,4 +113,5 @@ public class AbstractTest { } } + } diff --git a/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/OcrServiceIntegrationTest.java b/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/OcrServiceIntegrationTest.java index f07f8e6..1f3ce7a 100644 --- a/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/OcrServiceIntegrationTest.java +++ b/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/OcrServiceIntegrationTest.java @@ -3,6 +3,7 @@ package com.iqser.red.service.ocr.v1.server; import static com.iqser.red.pdftronlogic.commons.PdfTextExtraction.extractAllTextFromDocument; import static com.iqser.red.service.ocr.v1.server.utils.OsUtils.getTemporaryDirectory; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -18,6 +19,8 @@ import org.springframework.core.io.ClassPathResource; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.ocr.v1.server.service.FileStorageService; import com.iqser.red.service.ocr.v1.server.service.OCRService; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; import com.knecon.fforesight.tenantcommons.TenantContext; import com.pdftron.pdf.OCRModule; @@ -26,7 +29,6 @@ import io.micrometer.prometheus.PrometheusMeterRegistry; import io.micrometer.prometheus.PrometheusTimer; import lombok.SneakyThrows; - @Disabled // OCRModule is not available on build server. If you want to run the test set the property at the top. @SpringBootTest(properties = {"pdftron.ocrmodule.path=/YourOCRModulePath"}) public class OcrServiceIntegrationTest extends AbstractTest { @@ -40,13 +42,23 @@ public class OcrServiceIntegrationTest extends AbstractTest { @Autowired private PrometheusMeterRegistry registry; + @BeforeEach @SneakyThrows public void assertOCRModuleIsLoaded() { + assert OCRModule.isModuleAvailable(); } + @BeforeEach + public void stubMethods() { + + when(dossierService.getDossier(TEST_DOSSIER_ID)).thenReturn(Dossier.builder().dossierTemplateId(TEST_DOSSIER_TEMPLATE_ID).build()); + when(dossierTemplateService.getDossierTemplate(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(DossierTemplate.builder().removeWatermark(false).build()); + } + + @Test public void testOCRMetrics() { @@ -117,12 +129,12 @@ public class OcrServiceIntegrationTest extends AbstractTest { private String testOCR(String fileName) { ClassPathResource pdfFileResource = new ClassPathResource("files/" + fileName + ".pdf"); - var originId = FileStorageService.getStorageId("dossier", "file", FileType.ORIGIN); + var originId = FileStorageService.getStorageId(TEST_DOSSIER_ID, "file", FileType.ORIGIN); try (var fileStream = pdfFileResource.getInputStream()) { storageService.storeObject(TenantContext.getTenantId(), originId, fileStream); } try (var out = new FileOutputStream(getTemporaryDirectory() + "/" + fileName + ".pdf")) { - ocrService.runOcrOnDocument("dossier", "file", out); + ocrService.runOcrOnDocument(TEST_DOSSIER_ID, "file", out); System.out.println("File:" + getTemporaryDirectory() + "/" + fileName + ".pdf"); } @@ -130,4 +142,5 @@ public class OcrServiceIntegrationTest extends AbstractTest { return extractAllTextFromDocument(fileStream); } } + }