diff --git a/.github/workflows/03_code_review.yml b/.github/workflows/03_code_review.yml index c5eb07e..6d657f3 100644 --- a/.github/workflows/03_code_review.yml +++ b/.github/workflows/03_code_review.yml @@ -40,6 +40,6 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} sonar_token: ${{ secrets.SONAR_TOKEN }} project_key: ${{env.PROJECT_KEY}} - coverage_exclusions: "**/config/*,**/*Mock*,**/model/**,**/entity/*" - cpd_exclusions: "**/model/**,**/entity/*" + coverage_exclusions: "**/config/*,**/*Mock*,**/model/**,**/entity/*,**/exception/*" + cpd_exclusions: "**/model/**,**/entity/*,**/exception/**" java_version: '17' diff --git a/pom.xml b/pom.xml index 91dd2e9..367c5c5 100644 --- a/pom.xml +++ b/pom.xml @@ -64,14 +64,14 @@ org.mockito - mockito-core + mockito-junit-jupiter 4.3.1 test org.mockito - mockito-junit-jupiter - 4.3.1 + mockito-inline + 4.2.0 test diff --git a/src/main/java/it/gov/pagopa/nodoverifykototablestorage/NodoVerifyKOEventToTableStorage.java b/src/main/java/it/gov/pagopa/nodoverifykototablestorage/NodoVerifyKOEventToTableStorage.java index 20c2545..639a806 100644 --- a/src/main/java/it/gov/pagopa/nodoverifykototablestorage/NodoVerifyKOEventToTableStorage.java +++ b/src/main/java/it/gov/pagopa/nodoverifykototablestorage/NodoVerifyKOEventToTableStorage.java @@ -86,6 +86,8 @@ public void processNodoVerifyKOEvent ( // save all events in the retrieved batch in the storage persistEventBatch(logger, partitionedEvents); + } else { + logger.log(Level.SEVERE, () -> String.format("[ALERT][VerifyKOToTS] AppException - Error processing events, lengths do not match: [events: %d - properties: %d]", events.size(), properties.length)); } } catch (BlobStorageUploadException e) { logger.log(Level.SEVERE, () -> "[ALERT][VerifyKOToTS] Persistence Exception - Could not save event body on Azure Blob Storage, error: " + e); @@ -128,7 +130,7 @@ private String replaceDashWithUppercase(String input) { return builder.toString(); } - private static TableServiceClient getTableServiceClient(){ + public static TableServiceClient getTableServiceClient(){ if (tableServiceClient == null) { tableServiceClient = new TableServiceClientBuilder().connectionString(System.getenv("TABLE_STORAGE_CONN_STRING")).buildClient(); tableServiceClient.createTableIfNotExists(Constants.TABLE_NAME); @@ -136,7 +138,7 @@ private static TableServiceClient getTableServiceClient(){ return tableServiceClient; } - private static BlobContainerClient getBlobContainerClient(){ + public static BlobContainerClient getBlobContainerClient(){ if (blobContainerClient == null) { BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(System.getenv("BLOB_STORAGE_CONN_STRING")).buildClient(); blobContainerClient = blobServiceClient.createBlobContainerIfNotExists(Constants.BLOB_NAME); @@ -157,15 +159,15 @@ private void addToBatch(Map> partitionEvents private String storeBodyInBlobAndGetReference(String eventBody, String fileName) throws BlobStorageUploadException { String blobBodyReference = null; - BlobClient blobClient = getBlobContainerClient().getBlobClient(fileName); try { + BlobClient blobClient = getBlobContainerClient().getBlobClient(fileName); BinaryData body = BinaryData.fromStream(new ByteArrayInputStream(eventBody.getBytes(StandardCharsets.UTF_8))); blobClient.upload(body); blobBodyReference = BlobBodyReference.builder() - .storageAccount(blobContainerClient.getAccountName()) + .storageAccount(getBlobContainerClient().getAccountName()) .containerName(Constants.BLOB_NAME) .fileName(fileName) - .fileLength(body.getLength()) + .fileLength(body.toString().length()) .build().toString(); } catch (Exception e) { throw new BlobStorageUploadException(e); diff --git a/src/main/java/it/gov/pagopa/nodoverifykototablestorage/exception/AppException.java b/src/main/java/it/gov/pagopa/nodoverifykototablestorage/exception/AppException.java deleted file mode 100644 index d8bcc9a..0000000 --- a/src/main/java/it/gov/pagopa/nodoverifykototablestorage/exception/AppException.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.gov.pagopa.nodoverifykototablestorage.exception; - -public class AppException extends Exception { - - /** - * generated serialVersionUID - */ - private static final long serialVersionUID = -7564079264281462536L; - - public AppException() { - super(); - } - - public AppException(String message) { - super(message); - } - -} diff --git a/src/main/java/it/gov/pagopa/nodoverifykototablestorage/util/AppInfo.java b/src/main/java/it/gov/pagopa/nodoverifykototablestorage/util/AppInfo.java index 63381b0..10d3111 100644 --- a/src/main/java/it/gov/pagopa/nodoverifykototablestorage/util/AppInfo.java +++ b/src/main/java/it/gov/pagopa/nodoverifykototablestorage/util/AppInfo.java @@ -4,9 +4,8 @@ import com.fasterxml.jackson.annotation.JsonInclude; import lombok.*; -@Data +@Getter @Builder(toBuilder = true) -@NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PRIVATE) @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/src/main/java/it/gov/pagopa/nodoverifykototablestorage/util/ObjectMapperUtils.java b/src/main/java/it/gov/pagopa/nodoverifykototablestorage/util/ObjectMapperUtils.java index 009955a..dd53b8b 100644 --- a/src/main/java/it/gov/pagopa/nodoverifykototablestorage/util/ObjectMapperUtils.java +++ b/src/main/java/it/gov/pagopa/nodoverifykototablestorage/util/ObjectMapperUtils.java @@ -5,10 +5,6 @@ import org.modelmapper.ModelMapper; import org.modelmapper.convention.MatchingStrategies; -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - public class ObjectMapperUtils { private static final ModelMapper modelMapper; @@ -32,51 +28,7 @@ public class ObjectMapperUtils { private ObjectMapperUtils() { } - /** - *

Note: outClass object must have default constructor with no arguments

- * - * @param type of result object. - * @param type of source object to map from. - * @param entity entity that needs to be mapped. - * @param outClass class of result object. - * @return new object of outClass type. - */ - public static D map(final T entity, Class outClass) { - return modelMapper.map(entity, outClass); - } - public static D readValue(String string,Class clazz) throws JsonProcessingException { return objectMapper.readValue(string,clazz); } - /** - *

Note: outClass object must have default constructor with no arguments

- * - * @param entityList list of entities that needs to be mapped - * @param outCLass class of result list element - * @param type of objects in result list - * @param type of entity in entityList - * @return list of mapped object with type. - */ - public static List mapAll(final Collection entityList, Class outCLass) { - return entityList.stream() - .map(entity -> map(entity, outCLass)) - .collect(Collectors.toList()); - } - - /** - * Maps {@code source} to {@code destination}. - * - * @param source object to map from - * @param destination object to map to - */ - public static D map(final S source, D destination) { - modelMapper.map(source, destination); - return destination; - } - - public static String writeValueAsString(Object value) throws JsonProcessingException { - return objectMapper.writeValueAsString(value); - } - - } diff --git a/src/test/java/it/gov/pagopa/nodoverifykototablestorage/InfoTest.java b/src/test/java/it/gov/pagopa/nodoverifykototablestorage/InfoTest.java new file mode 100644 index 0000000..fff666d --- /dev/null +++ b/src/test/java/it/gov/pagopa/nodoverifykototablestorage/InfoTest.java @@ -0,0 +1,91 @@ +package it.gov.pagopa.nodoverifykototablestorage; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; + +import java.util.Optional; +import java.util.logging.Logger; + +import it.gov.pagopa.nodoverifykototablestorage.util.AppInfo; +import lombok.SneakyThrows; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.jupiter.MockitoExtension; + +import com.microsoft.azure.functions.ExecutionContext; +import com.microsoft.azure.functions.HttpRequestMessage; +import com.microsoft.azure.functions.HttpResponseMessage; +import com.microsoft.azure.functions.HttpStatus; + +@ExtendWith(MockitoExtension.class) +class InfoTest { + + @Mock + ExecutionContext context; + + @Spy + Info infoFunction; + + @Test + void runHttpTriggerOK() { + // test precondition + Logger logger = Logger.getLogger("NodoVerifyKOEventToTableStorage-test-logger"); + when(context.getLogger()).thenReturn(logger); + + // test precondition + final HttpResponseMessage.Builder builder = mock(HttpResponseMessage.Builder.class); + @SuppressWarnings("unchecked") + HttpRequestMessage> request = mock(HttpRequestMessage.class); + + HttpResponseMessage responseMock = mock(HttpResponseMessage.class); + doReturn(HttpStatus.OK).when(responseMock).getStatus(); + doReturn(builder).when(builder).body(any()); + doReturn(responseMock).when(builder).build(); + doReturn(builder).when(request).createResponseBuilder(any(HttpStatus.class)); + doReturn(builder).when(builder).header(anyString(), anyString()); + + // test execution + HttpResponseMessage response = infoFunction.run(request, context); + + // test assertion + assertEquals(HttpStatus.OK, response.getStatus()); + } + + @SneakyThrows + @Test + void getInfoOk() { + + // Mocking service creation + Logger logger = Logger.getLogger("NodoVerifyKOEventToTableStorage-test-logger"); + String path = "/META-INF/maven/it.gov.pagopa/nodoverifykototablestorage/pom.properties"; + + // Execute function + AppInfo response = infoFunction.getInfo(logger, path); + + // Checking assertions + assertNotNull(response.getName()); + assertNotNull(response.getVersion()); + assertNotNull(response.getEnvironment()); + } + + @SneakyThrows + @Test + void getInfoKo() { + + // Mocking service creation + Logger logger = Logger.getLogger("NodoVerifyKOEventToTableStorage-test-logger"); + + // Execute function + AppInfo response = infoFunction.getInfo(logger, null); + + // Checking assertions + assertNull(response.getName()); + assertNull(response.getVersion()); + assertNotNull(response.getEnvironment()); + } + +} \ No newline at end of file diff --git a/src/test/java/it/gov/pagopa/nodoverifykototablestorage/NodoVerifyKOEventToTableStorageTest.java b/src/test/java/it/gov/pagopa/nodoverifykototablestorage/NodoVerifyKOEventToTableStorageTest.java new file mode 100644 index 0000000..3255880 --- /dev/null +++ b/src/test/java/it/gov/pagopa/nodoverifykototablestorage/NodoVerifyKOEventToTableStorageTest.java @@ -0,0 +1,232 @@ +package it.gov.pagopa.nodoverifykototablestorage; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Logger; + +import com.azure.core.util.BinaryData; +import com.azure.data.tables.TableClient; +import com.azure.data.tables.TableServiceClient; +import com.azure.data.tables.TableServiceClientBuilder; +import com.azure.data.tables.models.TableTransactionAction; +import com.azure.storage.blob.BlobClient; +import com.azure.storage.blob.BlobContainerClient; +import com.azure.storage.blob.BlobServiceClient; +import com.azure.storage.blob.BlobServiceClientBuilder; +import com.microsoft.azure.functions.ExecutionContext; +import it.gov.pagopa.nodoverifykototablestorage.util.LogHandler; +import it.gov.pagopa.nodoverifykototablestorage.util.TestUtil; +import lombok.SneakyThrows; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.*; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class NodoVerifyKOEventToTableStorageTest { + + @SuppressWarnings("unchecked") + @Test + @SneakyThrows + void runOk() { + + TableServiceClient tableServiceClient = mock(TableServiceClient.class); + BlobServiceClient blobServiceClient = mock(BlobServiceClient.class); + BlobContainerClient blobContainerClient = mock(BlobContainerClient.class); + BlobClient blobClient = mock(BlobClient.class); + TableClient tableClient = mock(TableClient.class); + try ( + MockedConstruction blobServiceClientBuilder = Mockito.mockConstruction(BlobServiceClientBuilder.class, (mock, context) -> { + when(mock.connectionString(any())).thenReturn(mock); + when(mock.buildClient()).thenReturn(blobServiceClient); + }); + MockedConstruction tableServiceClientBuilder = Mockito.mockConstruction(TableServiceClientBuilder.class, (mock, context) -> { + when(mock.connectionString(any())).thenReturn(mock); + when(mock.buildClient()).thenReturn(tableServiceClient); + }); + ) { + + // mocking objects + ExecutionContext context = mock(ExecutionContext.class); + Logger logger = Logger.getLogger("NodoVerifyKOEventToDataStore-test-logger"); + LogHandler logHandler = new LogHandler(); + logger.addHandler(logHandler); + when(context.getLogger()).thenReturn(logger); + String storageAccount = "mockstorageaccount"; + when(blobServiceClient.createBlobContainerIfNotExists(any())).thenReturn(blobContainerClient); + when(blobContainerClient.getBlobClient(anyString())).thenReturn(blobClient); + when(tableServiceClient.getTableClient(any())).thenReturn(tableClient); + when(blobContainerClient.getAccountName()).thenReturn(storageAccount); + when(tableClient.submitTransaction(anyList())).thenReturn(null); + ArgumentCaptor blobCaptor = ArgumentCaptor.forClass(BinaryData.class); + ArgumentCaptor> transactionCaptor = ArgumentCaptor.forClass(List.class); + + // generating input + String eventInStringForm1 = TestUtil.readStringFromFile("events/event_ok_1.json"); + List events = new ArrayList<>(); + events.add(eventInStringForm1); + String eventInStringForm2 = TestUtil.readStringFromFile("events/event_ok_2.json"); + events.add(eventInStringForm2); + Map[] properties = new HashMap[2]; + properties[0] = new HashMap<>(); + properties[0].put("prop1_without_dash", true); + properties[0].put("prop1-with-dash", "1"); + properties[1] = new HashMap<>(); + properties[1].put("prop2_without_dash", false); + properties[1].put("prop2-with-dash", "2"); + + // generating expected output on event 1 + String partitionKey1 = "2023-01-01"; + String rowKey1 = "1672570800000-uuid-001"; + int size1 = BinaryData.fromStream(new ByteArrayInputStream(eventInStringForm1.getBytes(StandardCharsets.UTF_8))).toString().length(); + Map expectedEvent1 = new HashMap<>(); + expectedEvent1.put("PartitionKey", partitionKey1); + expectedEvent1.put("RowKey", rowKey1); + expectedEvent1.put("timestamp", 1672570800000L); + expectedEvent1.put("noticeNumber", "302040000090000000"); + expectedEvent1.put("idPA", "77777777777"); + expectedEvent1.put("idPsp", "88888888888"); + expectedEvent1.put("idStation", "77777777777_01"); + expectedEvent1.put("idChannel", "88888888888_01"); + expectedEvent1.put("prop1_without_dash", true); + expectedEvent1.put("prop1WithDash", "1"); + expectedEvent1.put("blobBodyRef", "{\"storageAccount\":\"" + storageAccount + "\",\"containerName\":\"null\",\"fileName\":\"" + rowKey1 + "\",\"fileLength\":" + size1 + "}"); + + // generating expected output on event 2 + String partitionKey2 = "2023-01-02"; + String rowKey2 = "1672657200000-uuid-002"; + int size2 = BinaryData.fromStream(new ByteArrayInputStream(eventInStringForm2.getBytes(StandardCharsets.UTF_8))).toString().length(); + Map expectedEvent2 = new HashMap<>(); + expectedEvent2.put("PartitionKey", partitionKey2); + expectedEvent2.put("RowKey", rowKey2); + expectedEvent2.put("timestamp", 1672657200000L); + expectedEvent2.put("noticeNumber", "302040000090000001"); + expectedEvent2.put("idPA", "77777777777"); + expectedEvent2.put("idPsp", "88888888888"); + expectedEvent2.put("idStation", "77777777777_01"); + expectedEvent2.put("idChannel", "88888888888_01"); + expectedEvent2.put("prop2_without_dash", false); + expectedEvent2.put("prop2WithDash", "2"); + expectedEvent2.put("blobBodyRef", "{\"storageAccount\":\"" + storageAccount + "\",\"containerName\":\"null\",\"fileName\":\"" + rowKey2 + "\",\"fileLength\":" + size2 + "}"); + + // merging events + List expectedEventsToPersist = List.of(expectedEvent1, expectedEvent2); + + // execute logic + NodoVerifyKOEventToTableStorage function = new NodoVerifyKOEventToTableStorage(); + function.processNodoVerifyKOEvent(events, properties, context); + + // test assertion for data persistence execution + verify(blobClient, times(2)).upload(blobCaptor.capture()); + verify(tableClient, times(2)).submitTransaction(transactionCaptor.capture()); + + // test assertion for blob storing + List binaryData = blobCaptor.getAllValues(); + assertNotNull(binaryData); + assertEquals(2, binaryData.size()); + assertEquals(eventInStringForm1, binaryData.get(0).toString()); + assertEquals(eventInStringForm2, binaryData.get(1).toString()); + + // test assertion for transaction storing + List> transactions = transactionCaptor.getAllValues(); + assertNotNull(transactions); + assertFalse(transactions.isEmpty()); + assertEquals(expectedEventsToPersist.size(), transactions.size()); + assertEquals(partitionKey1, transactions.get(0).get(0).getEntity().getPartitionKey()); + assertEquals(rowKey1, transactions.get(0).get(0).getEntity().getRowKey()); + assertEquals(expectedEvent1, transactions.get(0).get(0).getEntity().getProperties()); + assertEquals(partitionKey2, transactions.get(1).get(0).getEntity().getPartitionKey()); + assertEquals(rowKey2, transactions.get(1).get(0).getEntity().getRowKey()); + assertEquals(expectedEvent2, transactions.get(1).get(0).getEntity().getProperties()); + } + } + + @SuppressWarnings("unchecked") + @Test + @SneakyThrows + void runKo_invalidNumberOfProperties() { + // mocking objects + ExecutionContext context = mock(ExecutionContext.class); + Logger logger = Logger.getLogger("NodoVerifyKOEventToTableStorage-test-logger"); + LogHandler logHandler = new LogHandler(); + logger.addHandler(logHandler); + when(context.getLogger()).thenReturn(logger); + + // generating input + String eventInStringForm = TestUtil.readStringFromFile("events/event_ok_1.json"); + List events = new ArrayList<>(); + events.add(eventInStringForm); + Map[] properties = new HashMap[2]; + properties[0] = new HashMap<>(); + properties[0].put("prop1_without_dash", true); + properties[0].put("prop1-with-dash", "1"); + properties[1] = new HashMap<>(); + properties[1].put("prop1_without_dash", false); + properties[1].put("prop1-with-dash", "2"); + + // execute logic + NodoVerifyKOEventToTableStorage function = new NodoVerifyKOEventToTableStorage(); + function.processNodoVerifyKOEvent(events, properties, context); + + // test assertion + assertTrue(logHandler.getLogs().contains("Error processing events, lengths do not match: [events: 1 - properties: 2]")); + } + + @SuppressWarnings("unchecked") + @Test + @SneakyThrows + void runKo_missingFaultBeanTimestamp() { + // mocking objects + ExecutionContext context = mock(ExecutionContext.class); + Logger logger = Logger.getLogger("NodoVerifyKOEventToTableStorage-test-logger"); + LogHandler logHandler = new LogHandler(); + logger.addHandler(logHandler); + when(context.getLogger()).thenReturn(logger); + + // generating input + String eventInStringForm = TestUtil.readStringFromFile("events/event_ko_1.json"); + List events = new ArrayList<>(); + events.add(eventInStringForm); + Map[] properties = new HashMap[1]; + properties[0] = new HashMap<>(); + properties[0].put("prop1_without_dash", true); + properties[0].put("prop1-with-dash", "1"); + + // execute logic + NodoVerifyKOEventToTableStorage function = new NodoVerifyKOEventToTableStorage(); + function.processNodoVerifyKOEvent(events, properties, context); + + // test assertion + assertTrue(logHandler.getLogs().contains("java.lang.IllegalArgumentException: The field [faultBean.timestamp] does not exists in the passed event.")); + } + + @Test + @SneakyThrows + void runKo_genericError() { + // mocking objects + ExecutionContext context = mock(ExecutionContext.class); + Logger logger = Logger.getLogger("NodoVerifyKOEventToDataStore-test-logger"); + LogHandler logHandler = new LogHandler(); + logger.addHandler(logHandler); + when(context.getLogger()).thenReturn(logger); + + // generating input + String eventInStringForm = TestUtil.readStringFromFile("events/event_ok_1.json"); + List events = new ArrayList<>(); + events.add(eventInStringForm); + + // execute logic + NodoVerifyKOEventToTableStorage function = spy(NodoVerifyKOEventToTableStorage.class); + function.processNodoVerifyKOEvent(events, null, context); + + // test assertion + assertTrue(logHandler.getLogs().contains("[ALERT][VerifyKOToTS] AppException - Generic exception on table storage nodo-verify-ko-events msg ingestion")); + } +} diff --git a/src/test/java/it/gov/pagopa/nodoverifykototablestorage/util/LogHandler.java b/src/test/java/it/gov/pagopa/nodoverifykototablestorage/util/LogHandler.java new file mode 100644 index 0000000..0da8f5b --- /dev/null +++ b/src/test/java/it/gov/pagopa/nodoverifykototablestorage/util/LogHandler.java @@ -0,0 +1,32 @@ +package it.gov.pagopa.nodoverifykototablestorage.util; + +import java.util.logging.Handler; +import java.util.logging.LogRecord; + +public class LogHandler extends Handler { + + private final StringBuilder buffer = new StringBuilder(); + + @Override + public void publish(final LogRecord record) { + this.buffer.append(record.getMessage()); + } + + @Override + public void flush() { + // intentionally blank + } + + @Override + public void close() { + resetLogs(); + } + + public String getLogs() { + return this.buffer.toString(); + } + + public void resetLogs() { + this.buffer.setLength(0); + } +} \ No newline at end of file diff --git a/src/test/java/it/gov/pagopa/nodoverifykototablestorage/util/TestUtil.java b/src/test/java/it/gov/pagopa/nodoverifykototablestorage/util/TestUtil.java new file mode 100644 index 0000000..51a7da3 --- /dev/null +++ b/src/test/java/it/gov/pagopa/nodoverifykototablestorage/util/TestUtil.java @@ -0,0 +1,18 @@ +package it.gov.pagopa.nodoverifykototablestorage.util; + +import lombok.experimental.UtilityClass; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.Objects; + +@UtilityClass +public class TestUtil { + + public String readStringFromFile(String relativePath) throws IOException { + ClassLoader classLoader = TestUtil.class.getClassLoader(); + File file = new File(Objects.requireNonNull(classLoader.getResource(relativePath)).getPath()); + return Files.readString(file.toPath()); + } +} diff --git a/src/test/resources/META-INF/maven/it.gov.pagopa/nodoverifykototablestorage/pom.properties b/src/test/resources/META-INF/maven/it.gov.pagopa/nodoverifykototablestorage/pom.properties new file mode 100644 index 0000000..e4792bb --- /dev/null +++ b/src/test/resources/META-INF/maven/it.gov.pagopa/nodoverifykototablestorage/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Fri Jul 07 10:12:25 CEST 2023 +groupId=it.gov.pagopa +artifactId=nodoverifykototablestorage +version=x.y.z \ No newline at end of file diff --git a/src/test/resources/events/event_ko_1.json b/src/test/resources/events/event_ko_1.json new file mode 100644 index 0000000..6d8c1be --- /dev/null +++ b/src/test/resources/events/event_ko_1.json @@ -0,0 +1,20 @@ +{ + "id": "uuid-003", + "version": "2", + "debtorPosition": { + "modelType": "2", + "noticeNumber": "302040000090000000", + "amount": "50.00" + }, + "creditor": { + "idPA": "77777777777", + "ccPost": "777777777777", + "idBrokerPA": "77777777777", + "idStation": "77777777777_01" + }, + "psp": { + "idPsp": "88888888888", + "idBrokerPsp": "88888888888", + "idChannel": "88888888888_01" + } +} \ No newline at end of file diff --git a/src/test/resources/events/event_ok_1.json b/src/test/resources/events/event_ok_1.json new file mode 100644 index 0000000..22a1886 --- /dev/null +++ b/src/test/resources/events/event_ok_1.json @@ -0,0 +1,25 @@ +{ + "id": "uuid-001", + "version": "2", + "debtorPosition": { + "modelType": "2", + "noticeNumber": "302040000090000000", + "amount": "50.00" + }, + "creditor": { + "idPA": "77777777777", + "ccPost": "777777777777", + "idBrokerPA": "77777777777", + "idStation": "77777777777_01" + }, + "psp": { + "idPsp": "88888888888", + "idBrokerPsp": "88888888888", + "idChannel": "88888888888_01" + }, + "faultBean": { + "faultCode": "PPT_STAZIONE_INT_PA_ERRORE_RESPONSE", + "description": "EC service error at 2023-01-01T12:00:00", + "timestamp": 1672570800000 + } +} \ No newline at end of file diff --git a/src/test/resources/events/event_ok_2.json b/src/test/resources/events/event_ok_2.json new file mode 100644 index 0000000..af4eb47 --- /dev/null +++ b/src/test/resources/events/event_ok_2.json @@ -0,0 +1,25 @@ +{ + "id": "uuid-002", + "version": "2", + "debtorPosition": { + "modelType": "2", + "noticeNumber": "302040000090000001", + "amount": "100.00" + }, + "creditor": { + "idPA": "77777777777", + "ccPost": "777777777777", + "idBrokerPA": "77777777777", + "idStation": "77777777777_01" + }, + "psp": { + "idPsp": "88888888888", + "idBrokerPsp": "88888888888", + "idChannel": "88888888888_01" + }, + "faultBean": { + "faultCode": "PPT_STAZIONE_INT_PA_ERRORE_RESPONSE", + "description": "EC service error at 2023-01-02T12:00:00", + "timestamp": 1672657200000 + } +} \ No newline at end of file diff --git a/src/test/resources/mockito-extensions /org.mockito.plugins.MockMaker b/src/test/resources/mockito-extensions /org.mockito.plugins.MockMaker new file mode 100644 index 0000000..ca6ee9c --- /dev/null +++ b/src/test/resources/mockito-extensions /org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline \ No newline at end of file