Skip to content

Commit

Permalink
Merge pull request #10 from pagopa/NOD-892-implementazione-j-unit
Browse files Browse the repository at this point in the history
feat: NOD-892 implementazione j unit
  • Loading branch information
aomegax authored May 31, 2024
2 parents c03e870 + bd2c78c commit 32a962f
Show file tree
Hide file tree
Showing 12 changed files with 678 additions and 5 deletions.
18 changes: 15 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,18 @@
<version>4.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-reflect</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>


<!-- resteasy START -->
Expand Down Expand Up @@ -364,9 +376,7 @@
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<!-- RELEASE_VERSION -->
<version>6.6.0</version>
<!-- /RELEASE_VERSION -->
<version>7.4.0</version>
<executions>
<execution>
<goals>
Expand All @@ -375,6 +385,8 @@
<configuration>
<inputSpec>${project.basedir}/src/main/openapi/openapi_internal.json</inputSpec>
<generatorName>java</generatorName>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
</configuration>
</execution>
</executions>
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/it/gov/pagopa/fdrxmltojson/FdrXmlError.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@

import java.time.Instant;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand Down
158 changes: 158 additions & 0 deletions src/test/java/FdrXmlErrorTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
import com.azure.core.http.rest.PagedIterable;
import com.azure.data.tables.TableClient;
import com.azure.data.tables.TableServiceClient;
import com.azure.data.tables.models.TableEntity;
import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobContainerClient;
import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import it.gov.pagopa.fdrxmltojson.AppConstant;
import it.gov.pagopa.fdrxmltojson.FdrXmlError;
import lombok.SneakyThrows;
import org.junit.jupiter.api.Assertions;
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 org.powermock.reflect.Whitebox;

import java.util.*;
import java.util.logging.Logger;

import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)
class FdrXmlErrorTest {

@Spy
FdrXmlError fdrXmlError;

@Mock
ExecutionContext context;

private static final Logger logger = Logger.getLogger("FdrXmlError-test-logger");

final HttpRequestMessage<Optional<String>> request = mock(HttpRequestMessage.class);
final HttpResponseMessage.Builder builder = mock(HttpResponseMessage.Builder.class);

@Test
@SneakyThrows
void runOk() {
// mocking objects
when(context.getLogger()).thenReturn(logger);

doReturn(builder).when(request).createResponseBuilder(any(HttpStatus.class));

Whitebox.setInternalState(FdrXmlError.class, "tableName", "errors");
TableServiceClient tableServiceClient = mock(TableServiceClient.class);
Whitebox.setInternalState(FdrXmlError.class, "tableServiceClient", tableServiceClient);
TableClient tableClient = mock(TableClient.class);
PagedIterable<TableEntity> pagedIterable = mock(PagedIterable.class);
when(tableServiceClient.getTableClient(anyString())).thenReturn(tableClient);
when(tableClient.listEntities()).thenReturn(pagedIterable);
TableEntity tableEntity = new TableEntity("2024-01-01", "1");
Map<String, Object> tableEntityMap = new HashMap<>();
tableEntityMap.put(AppConstant.columnFieldFdr, "fdr");
tableEntityMap.put(AppConstant.columnFieldPspId, "pspId");
tableEntityMap.put(AppConstant.columnFieldErrorType, "DELETE_BLOB_ERROR");
tableEntityMap.put(AppConstant.columnFieldFileName, "provaFileName");
tableEntity.setProperties(tableEntityMap);
Iterator<TableEntity> mockIterator = List.of(tableEntity).iterator();
when(pagedIterable.iterator()).thenReturn(mockIterator);

BlobContainerClient blobContainerClient = mock(BlobContainerClient.class);
BlobClient blobClient = mock(BlobClient.class);
when(blobContainerClient.getBlobClient(anyString())).thenReturn(blobClient);
Whitebox.setInternalState(FdrXmlError.class, "blobContainerClient", blobContainerClient);

// generating input
request.getQueryParameters().put("partitionKey", "2024-01-01");
request.getQueryParameters().put("rowKey", "1");
request.getQueryParameters().put("deleteOnlyByKey", "true");

// execute logic
Assertions.assertThrows(Exception.class, () -> fdrXmlError.run(request, context));
}

@Test
@SneakyThrows
void runOk_2() {
// mocking objects
when(context.getLogger()).thenReturn(logger);

Whitebox.setInternalState(FdrXmlError.class, "tableName", "errors");
TableServiceClient tableServiceClient = mock(TableServiceClient.class);
Whitebox.setInternalState(FdrXmlError.class, "tableServiceClient", tableServiceClient);
TableClient tableClient = mock(TableClient.class);
PagedIterable<TableEntity> pagedIterable = mock(PagedIterable.class);
when(tableServiceClient.getTableClient(anyString())).thenReturn(tableClient);
when(tableClient.listEntities()).thenReturn(pagedIterable);
TableEntity tableEntity = new TableEntity("2024-01-01", "1");
Map<String, Object> tableEntityMap = new HashMap<>();
tableEntityMap.put(AppConstant.columnFieldFdr, "fdr");
tableEntityMap.put(AppConstant.columnFieldPspId, "pspId");
tableEntityMap.put(AppConstant.columnFieldErrorType, "GENERIC_ERROR");
tableEntityMap.put(AppConstant.columnFieldFileName, "provaFileName");
tableEntity.setProperties(tableEntityMap);
Iterator<TableEntity> mockIterator = List.of(tableEntity).iterator();
when(pagedIterable.iterator()).thenReturn(mockIterator);

BlobContainerClient blobContainerClient = mock(BlobContainerClient.class);
BlobClient blobClient = mock(BlobClient.class);
when(blobContainerClient.getBlobClient(anyString())).thenReturn(blobClient);
Whitebox.setInternalState(FdrXmlError.class, "blobContainerClient", blobContainerClient);

// generating input
doReturn(builder).when(request).createResponseBuilder(any(HttpStatus.class));

request.getQueryParameters().put("partitionKey", "2024-01-01");
request.getQueryParameters().put("rowKey", "1");
request.getQueryParameters().put("deleteOnlyByKey", "true");

// execute logic
Assertions.assertThrows(Exception.class, () -> fdrXmlError.run(request, context));
}

@Test
@SneakyThrows
void runKo_1() {
// mocking objects
when(context.getLogger()).thenReturn(logger);

doReturn(builder).when(request).createResponseBuilder(any(HttpStatus.class));

Whitebox.setInternalState(FdrXmlError.class, "tableName", "errors");
TableServiceClient tableServiceClient = mock(TableServiceClient.class);
Whitebox.setInternalState(FdrXmlError.class, "tableServiceClient", tableServiceClient);
TableClient tableClient = mock(TableClient.class);
PagedIterable<TableEntity> pagedIterable = mock(PagedIterable.class);
when(tableServiceClient.getTableClient(anyString())).thenReturn(tableClient);
when(tableClient.listEntities()).thenReturn(pagedIterable);
TableEntity tableEntity = new TableEntity("2024-01-01", "1");
Map<String, Object> tableEntityMap = new HashMap<>();
tableEntityMap.put(AppConstant.columnFieldFdr, "fdr");
tableEntityMap.put(AppConstant.columnFieldPspId, "pspId");
tableEntityMap.put(AppConstant.columnFieldErrorType, "GENERIC_ERROR");
tableEntityMap.put(AppConstant.columnFieldFileName, "provaFileName");
tableEntity.setProperties(tableEntityMap);
Iterator<TableEntity> mockIterator = List.of(tableEntity).iterator();
when(pagedIterable.iterator()).thenReturn(mockIterator);

BlobContainerClient blobContainerClient = mock(BlobContainerClient.class);
BlobClient blobClient = mock(BlobClient.class);
when(blobContainerClient.getBlobClient(anyString())).thenReturn(blobClient);
Whitebox.setInternalState(FdrXmlError.class, "blobContainerClient", blobContainerClient);

// generating input
request.getQueryParameters().put("partitionKey", "2024-01-01");
request.getQueryParameters().put("rowKey", "1");
request.getQueryParameters().put("deleteOnlyByKey", "false");

// execute logic
Assertions.assertThrows(Exception.class, () -> fdrXmlError.run(request, context));
}

}
Loading

0 comments on commit 32a962f

Please sign in to comment.