From 1d03b1603033081901c5f53284e05023964e869e Mon Sep 17 00:00:00 2001 From: Lorenzo Catalano Date: Fri, 5 Apr 2024 16:49:05 +0200 Subject: [PATCH] added unit test --- .../service/DebtPositionService.java | 3 - .../it/gov/pagopa/wispconverter/RptTest.java | 58 +++++++++++++++++-- src/test/resources/requests/rptBollo.xml | 14 ++--- 3 files changed, 61 insertions(+), 14 deletions(-) diff --git a/src/main/java/it/gov/pagopa/wispconverter/service/DebtPositionService.java b/src/main/java/it/gov/pagopa/wispconverter/service/DebtPositionService.java index 52ba41f9..c623265e 100644 --- a/src/main/java/it/gov/pagopa/wispconverter/service/DebtPositionService.java +++ b/src/main/java/it/gov/pagopa/wispconverter/service/DebtPositionService.java @@ -202,10 +202,8 @@ private it.gov.pagopa.gen.wispconverter.client.gpd.model.TransferModelDto extrac */ DigitalStampDTO digitalStampDTO = transferDTO.getDigitalStamp(); if (digitalStampDTO != null) { - transfer.setStamp(mapper.toStamp(digitalStampDTO)); } else { - String iban = transferDTO.getCreditIban(); if (iban == null) { throw new AppException(AppErrorCodeMessageEnum.VALIDATION_INVALID_IBANS); @@ -214,7 +212,6 @@ private it.gov.pagopa.gen.wispconverter.client.gpd.model.TransferModelDto extrac transfer.setPostalIban(isPostalIBAN(iban) ? iban : null); transfer.setOrganizationFiscalCode(organizationFiscalCode); } - return transfer; } diff --git a/src/test/java/it/gov/pagopa/wispconverter/RptTest.java b/src/test/java/it/gov/pagopa/wispconverter/RptTest.java index 8f4fccdc..971f3aa6 100644 --- a/src/test/java/it/gov/pagopa/wispconverter/RptTest.java +++ b/src/test/java/it/gov/pagopa/wispconverter/RptTest.java @@ -1,9 +1,11 @@ package it.gov.pagopa.wispconverter; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.*; import com.fasterxml.jackson.databind.ObjectMapper; +import it.gov.pagopa.gen.wispconverter.client.gpd.model.MultiplePaymentPositionModelDto; import it.gov.pagopa.gen.wispconverter.client.iuvgenerator.model.IuvGenerationModelResponseDto; import it.gov.pagopa.wispconverter.repository.RPTRequestRepository; import it.gov.pagopa.wispconverter.repository.model.RPTRequestEntity; @@ -15,6 +17,7 @@ import java.util.*; import java.util.zip.GZIPOutputStream; import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; @@ -51,11 +54,11 @@ class RptTest { @Qualifier("redisSimpleTemplate") @MockBean private RedisTemplate redisSimpleTemplate; - private String getRptPayload(String station,String amount,String datiSpecificiRiscossione){ + private String getRptPayload(boolean bollo,String station,String amount,String datiSpecificiRiscossione){ if(datiSpecificiRiscossione==null){ datiSpecificiRiscossione = "9/tipodovuto_7/datospecifico"; } - String rpt = TestUtils.loadFileContent("/requests/rpt.xml"); + String rpt = TestUtils.loadFileContent(bollo?"/requests/rptBollo.xml":"/requests/rpt.xml"); String rptreplace = rpt .replace("{datiSpecificiRiscossione}",datiSpecificiRiscossione) .replaceAll("\\{amount\\}", amount); @@ -94,7 +97,7 @@ void success() throws Exception { RPTRequestEntity.builder().primitive("nodoInviaRPT") .payload( new String(Base64.getEncoder().encode(zip( - getRptPayload(station,"100.00",null).getBytes(StandardCharsets.UTF_8))),StandardCharsets.UTF_8) + getRptPayload(false,station,"100.00",null).getBytes(StandardCharsets.UTF_8))),StandardCharsets.UTF_8) ).build() ) ); @@ -114,6 +117,11 @@ void success() throws Exception { verify(iuveneratorClient,times(1)).invokeAPI(any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any()); verify(gpdClient,times(1)).invokeAPI(any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any()); verify(decouplerCachingClient,times(1)).invokeAPI(any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any()); + + ArgumentCaptor argument = ArgumentCaptor.forClass(Object.class); + verify(gpdClient).invokeAPI(any(),any(),any(),any(),argument.capture(),any(),any(),any(),any(),any(),any(),any()); + MultiplePaymentPositionModelDto value = (MultiplePaymentPositionModelDto) argument.getValue(); + assertEquals(1, value.getPaymentPositions().size()); } @Test @@ -136,7 +144,49 @@ void success_tassonomia() throws Exception { RPTRequestEntity.builder().primitive("nodoInviaRPT") .payload( new String(Base64.getEncoder().encode(zip( - getRptPayload(station,"100.00","datispec").getBytes(StandardCharsets.UTF_8))),StandardCharsets.UTF_8) + getRptPayload(false,station,"100.00","datispec").getBytes(StandardCharsets.UTF_8))),StandardCharsets.UTF_8) + ).build() + ) + ); + when(redisSimpleTemplate.opsForValue()).thenReturn(mock(ValueOperations.class)); + + + + mvc.perform(MockMvcRequestBuilders.get("/redirect?sessionId=aaaaaaaaaaaa").accept(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().is3xxRedirection()) + .andDo( + (result) -> { + assertNotNull(result); + assertNotNull(result.getResponse()); + }); + + verify(checkoutClient,times(1)).invokeAPI(any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any()); + verify(iuveneratorClient,times(1)).invokeAPI(any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any()); + verify(gpdClient,times(1)).invokeAPI(any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any()); + verify(decouplerCachingClient,times(1)).invokeAPI(any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any(),any()); + } + + @Test + void success_bollo() throws Exception { + String station = "mystation"; + TestUtils.setMock(cacheClient,ResponseEntity.ok().body(TestUtils.configData(station))); + + org.springframework.test.util.ReflectionTestUtils.setField(configCacheService, "configCacheClient",cacheClient); + HttpHeaders headers = new HttpHeaders(); + headers.add("location","locationheader"); + TestUtils.setMock(checkoutClient, ResponseEntity.status(HttpStatus.FOUND).headers(headers).build()); + + IuvGenerationModelResponseDto iuvGenerationModelResponseDto = new IuvGenerationModelResponseDto(); + iuvGenerationModelResponseDto.setIuv("00000000"); + TestUtils.setMock(iuveneratorClient,ResponseEntity.ok().body(iuvGenerationModelResponseDto)); + TestUtils.setMock(gpdClient,ResponseEntity.ok().build()); + TestUtils.setMock(decouplerCachingClient,ResponseEntity.ok().build()); + when(rptRequestRepository.findById(any())).thenReturn( + Optional.of( + RPTRequestEntity.builder().primitive("nodoInviaRPT") + .payload( + new String(Base64.getEncoder().encode(zip( + getRptPayload(true,station,"100.00",null).getBytes(StandardCharsets.UTF_8))),StandardCharsets.UTF_8) ).build() ) ); diff --git a/src/test/resources/requests/rptBollo.xml b/src/test/resources/requests/rptBollo.xml index d91f9861..2d6194c1 100644 --- a/src/test/resources/requests/rptBollo.xml +++ b/src/test/resources/requests/rptBollo.xml @@ -4,7 +4,7 @@ {pa} 3179612d79fa3366 - 2017-09-06T17:13:30 + {dataOraMessaggioRichiesta}T17:13:30 USR @@ -21,22 +21,22 @@ Comune di Nuoro - 2017-09-06 + {dataEsecuzionePagamento} {amount} {tipoVersamento} {iuv} {ccp} 0 - {amountVersamento1} - IT96R0123454321000000012345 + {amount} + IT96R0760154321000000012345 Pagamento di prova - 9/tipodovuto_6 + {datiSpecificiRiscossione} - {amountBollo} + {amount} Pagamento di prova - 9/tipodovuto_7 + {datiSpecificiRiscossione} 01 YWVvbGlhbQ==