From d1d99957b2f7736c16b57877537f644e2beb2314 Mon Sep 17 00:00:00 2001 From: AngeloCaporaso Date: Mon, 20 Nov 2023 17:40:03 +0100 Subject: [PATCH 1/3] [PAGOPA-1359] fix: Update status check --- .../pagopa/payments/service/PartnerService.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/it/gov/pagopa/payments/service/PartnerService.java b/src/main/java/it/gov/pagopa/payments/service/PartnerService.java index 123cd730..e5d44b35 100644 --- a/src/main/java/it/gov/pagopa/payments/service/PartnerService.java +++ b/src/main/java/it/gov/pagopa/payments/service/PartnerService.java @@ -148,8 +148,7 @@ public PaVerifyPaymentNoticeRes paVerifyPaymentNotice(PaVerifyPaymentNoticeReq r request.getQrCode().getNoticeNumber()); try { result = this.generatePaVerifyPaymentNoticeResponse(paymentOption); - } - catch (Exception e){ + } catch (Exception e) { log.error("[paVerifyPaymentNotice] paymentOption {}", paymentOption, e); throw e; } @@ -340,8 +339,8 @@ private void checkDebtPositionStatus(PaymentsModelResponse paymentOption) { || paymentOption.getDebtPositionStatus().equals(DebtPositionStatus.PUBLISHED)) { log.error(DEBT_POSITION_STATUS_ERROR + paymentOption.getDebtPositionStatus() + iuvLog); throw new PartnerValidationException(PaaErrorEnum.PAA_PAGAMENTO_SCONOSCIUTO); - } else if (paymentOption.getDebtPositionStatus().equals(DebtPositionStatus.PARTIALLY_PAID) - || paymentOption.getDebtPositionStatus().equals(DebtPositionStatus.PAID) + } else if (paymentOption.getDebtPositionStatus().equals(DebtPositionStatus.PAID) + || paymentOption.getStatus().equals(PaymentOptionStatus.PO_PAID) || paymentOption.getDebtPositionStatus().equals(DebtPositionStatus.REPORTED)) { log.error(DEBT_POSITION_STATUS_ERROR + paymentOption.getDebtPositionStatus() + iuvLog); throw new PartnerValidationException(PaaErrorEnum.PAA_PAGAMENTO_DUPLICATO); @@ -569,23 +568,20 @@ private CtTransferPAV2 getTransferResponseV2( return transferPA; } - private CtMapEntry getPaymentOptionMetadata( - PaymentOptionMetadataModel metadataModel) { + private CtMapEntry getPaymentOptionMetadata(PaymentOptionMetadataModel metadataModel) { CtMapEntry ctMapEntry = new CtMapEntry(); ctMapEntry.setKey(metadataModel.getKey()); ctMapEntry.setValue(metadataModel.getValue()); return ctMapEntry; } - private CtMapEntry getTransferMetadata( - TransferMetadataModel metadataModel) { + private CtMapEntry getTransferMetadata(TransferMetadataModel metadataModel) { CtMapEntry ctMapEntry = new CtMapEntry(); ctMapEntry.setKey(metadataModel.getKey()); ctMapEntry.setValue(metadataModel.getValue()); return ctMapEntry; } - /** * The method return iban given transferType and transfer, according to * https://pagopa.atlassian.net/wiki/spaces/PAG/pages/96403906/paGetPayment#trasferType From d0766f2c9c63dbea3c548138c3df1f388d318b97 Mon Sep 17 00:00:00 2001 From: AngeloCaporaso Date: Thu, 23 Nov 2023 10:30:11 +0100 Subject: [PATCH 2/3] [PAGOPA-1359] fix: Update JUnit test --- .../support/utility/request_builders.js | 12 ++++++++++ .../payments/service/PartnerServiceTest.java | 22 ++++++------------- ...getPaymentOptionWithIncompleteAddress.json | 4 ++-- .../gpd/getPaymentOption_PO_UNPAID.json | 2 +- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/integration-test/src/step_definitions/support/utility/request_builders.js b/integration-test/src/step_definitions/support/utility/request_builders.js index ec8ea4ee..7b0d823e 100644 --- a/integration-test/src/step_definitions/support/utility/request_builders.js +++ b/integration-test/src/step_definitions/support/utility/request_builders.js @@ -108,6 +108,12 @@ function buildCreateDebtPositionRequest(debtPosition, payer) { dueDate: debtPosition.dueDate, retentionDate: debtPosition.retentionDate, fee: 0, + paymentOptionMetadata: [ + { + "key": "po-metadata-key", + "value": "po-metadata-value" + } + ], transfer: [ { idTransfer: debtPosition.transferId1, @@ -115,6 +121,12 @@ function buildCreateDebtPositionRequest(debtPosition, payer) { remittanceInformation: "Rata 1", category: "9/0101108TS/", iban: debtPosition.iban, + transferMetadata: [ + { + "key": "key", + "value": "string" + } + ] }, { idTransfer: debtPosition.transferId2, diff --git a/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java b/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java index ed322b76..f7e8df59 100644 --- a/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java +++ b/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java @@ -137,7 +137,7 @@ void paVerifyPaymentNoticeTest() throws DatatypeConfigurationException, IOExcept .thenReturn(factoryUtil.createCtPaymentOptionsDescriptionListPA()); PaymentsModelResponse paymentModel = - MockUtil.readModelFromFile("gpd/getPaymentOption.json", PaymentsModelResponse.class); + MockUtil.readModelFromFile("gpd/getPaymentOption_PO_UNPAID.json", PaymentsModelResponse.class); when(gpdClient.getPaymentOption(anyString(), anyString())).thenReturn(paymentModel); // Test execution @@ -298,7 +298,7 @@ void paGetPaymentTest() when(gpdClient.getPaymentOption(anyString(), anyString())) .thenReturn( - MockUtil.readModelFromFile("gpd/getPaymentOption.json", PaymentsModelResponse.class)); + MockUtil.readModelFromFile("gpd/getPaymentOption_PO_UNPAID.json", PaymentsModelResponse.class)); // Test execution PaGetPaymentRes responseBody = partnerService.paGetPayment(requestBody); @@ -313,7 +313,7 @@ void paGetPaymentTest() .isEqualTo( DatatypeFactory.newInstance().newXMLGregorianCalendar("2022-02-25T17:03:59.408")); assertEquals("77777777777", requestBody.getQrCode().getFiscalCode()); - assertEquals(3, responseBody.getData().getTransferList().getTransfer().size()); + assertEquals(2, responseBody.getData().getTransferList().getTransfer().size()); // in paGetPayment v1 the 'richiestaMarcaDaBollo' does not exist org.hamcrest.MatcherAssert.assertThat( @@ -324,10 +324,7 @@ void paGetPaymentTest() "IBAN", org.hamcrest.Matchers.is("string"))), org.hamcrest.Matchers.allOf( org.hamcrest.Matchers.hasProperty( - "IBAN", org.hamcrest.Matchers.is("ABC"))), - org.hamcrest.Matchers.allOf( - org.hamcrest.Matchers.hasProperty( - "IBAN", org.hamcrest.Matchers.nullValue())))); + "IBAN", org.hamcrest.Matchers.is("ABC"))))); } @Test @@ -801,7 +798,7 @@ void paGetPaymentV2Test() when(gpdClient.getPaymentOption(anyString(), anyString())) .thenReturn( - MockUtil.readModelFromFile("gpd/getPaymentOption.json", PaymentsModelResponse.class)); + MockUtil.readModelFromFile("gpd/getPaymentOption_PO_UNPAID.json", PaymentsModelResponse.class)); // Test execution PaGetPaymentV2Response responseBody = pService.paGetPaymentV2(requestBody); @@ -816,7 +813,7 @@ void paGetPaymentV2Test() .isEqualTo( DatatypeFactory.newInstance().newXMLGregorianCalendar("2022-02-25T17:03:59.408")); assertEquals("77777777777", requestBody.getQrCode().getFiscalCode()); - assertEquals(3, responseBody.getData().getTransferList().getTransfer().size()); + assertEquals(2, responseBody.getData().getTransferList().getTransfer().size()); // in paGetPayment v2 there is the new 'richiestaMarcaDaBollo' field and it can be valued org.hamcrest.MatcherAssert.assertThat( @@ -831,12 +828,7 @@ void paGetPaymentV2Test() org.hamcrest.Matchers.hasProperty( "richiestaMarcaDaBollo", org.hamcrest.Matchers.nullValue()), org.hamcrest.Matchers.hasProperty( - "IBAN", org.hamcrest.Matchers.is("ABC"))), - org.hamcrest.Matchers.allOf( - org.hamcrest.Matchers.hasProperty( - "richiestaMarcaDaBollo", org.hamcrest.Matchers.notNullValue()), - org.hamcrest.Matchers.hasProperty( - "IBAN", org.hamcrest.Matchers.nullValue())))); + "IBAN", org.hamcrest.Matchers.is("ABC"))))); } @Test diff --git a/src/test/resources/gpd/getPaymentOptionWithIncompleteAddress.json b/src/test/resources/gpd/getPaymentOptionWithIncompleteAddress.json index f48a5fa1..cef1a245 100644 --- a/src/test/resources/gpd/getPaymentOptionWithIncompleteAddress.json +++ b/src/test/resources/gpd/getPaymentOptionWithIncompleteAddress.json @@ -6,7 +6,7 @@ "isPartialPayment": false, "dueDate": "2022-04-20T12:15:38.927", "retentionDate": "2022-06-19T12:15:38.927", - "paymentDate": "2021-10-01T17:48:22", + "paymentDate": null, "reportingDate": null, "insertedDate": null, "paymentMethod": "creditCard", @@ -14,7 +14,7 @@ "pspCompany": "PSP name", "idReceipt": "725d128ec27911edafa10242ac120002", "idFlowReporting": null, - "status": "PO_PAID", + "status": "PO_UNPAID", "paymentOptionMetadata": [ { "key": "string", diff --git a/src/test/resources/gpd/getPaymentOption_PO_UNPAID.json b/src/test/resources/gpd/getPaymentOption_PO_UNPAID.json index 5a6d3524..6cc6ba27 100644 --- a/src/test/resources/gpd/getPaymentOption_PO_UNPAID.json +++ b/src/test/resources/gpd/getPaymentOption_PO_UNPAID.json @@ -6,7 +6,7 @@ "isPartialPayment": true, "dueDate": "2122-02-24T17:03:59.408Z", "retentionDate": "2022-02-25T17:03:59.408Z", - "paymentDate": "2022-02-24T17:03:59.408Z", + "paymentDate": null, "reportingDate": "2022-02-24T17:03:59.408Z", "insertedDate": "2022-02-24T17:03:59.408Z", "paymentMethod": "string", From 4938de0c18967828277b0fda3c8024a6ed525a91 Mon Sep 17 00:00:00 2001 From: AngeloCaporaso Date: Thu, 23 Nov 2023 12:10:01 +0100 Subject: [PATCH 3/3] [PAGOPA-1359] fix: Add check on `PAA_PAGAMENTO_SCADUTO` exception --- .../it/gov/pagopa/payments/service/PartnerService.java | 3 ++- .../gov/pagopa/payments/service/PartnerServiceTest.java | 8 ++++---- .../gpd/getPaymentOptionWithIncompleteAddress.json | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/it/gov/pagopa/payments/service/PartnerService.java b/src/main/java/it/gov/pagopa/payments/service/PartnerService.java index e5d44b35..1a34d1fe 100644 --- a/src/main/java/it/gov/pagopa/payments/service/PartnerService.java +++ b/src/main/java/it/gov/pagopa/payments/service/PartnerService.java @@ -329,7 +329,8 @@ private PaDemandPaymentNoticeResponse createPaDemandPaymentNoticeResponse( */ private void checkDebtPositionStatus(PaymentsModelResponse paymentOption) { String iuvLog = " [iuv=" + paymentOption.getIuv() + "]"; - if (paymentOption.getDebtPositionStatus().equals(DebtPositionStatus.EXPIRED)) { + if (paymentOption.getDebtPositionStatus().equals(DebtPositionStatus.EXPIRED) + || paymentOption.getDueDate().isBefore(LocalDateTime.now())) { log.error(DEBT_POSITION_STATUS_ERROR + paymentOption.getDebtPositionStatus() + iuvLog); throw new PartnerValidationException(PaaErrorEnum.PAA_PAGAMENTO_SCADUTO); } else if (paymentOption.getDebtPositionStatus().equals(DebtPositionStatus.INVALID)) { diff --git a/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java b/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java index f7e8df59..6b119ceb 100644 --- a/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java +++ b/src/test/java/it/gov/pagopa/payments/service/PartnerServiceTest.java @@ -356,10 +356,10 @@ void paGetPaymentIncompleteAddressTest() .isEqualTo("Canone Unico Patrimoniale - CORPORATE"); assertThat(responseBody.getData().getDueDate()) .isEqualTo( - DatatypeFactory.newInstance().newXMLGregorianCalendar("2022-04-20T12:15:38.927")); + DatatypeFactory.newInstance().newXMLGregorianCalendar("2125-04-20T12:15:38.927")); assertThat(responseBody.getData().getRetentionDate()) .isEqualTo( - DatatypeFactory.newInstance().newXMLGregorianCalendar("2022-06-19T12:15:38.927")); + DatatypeFactory.newInstance().newXMLGregorianCalendar("2125-06-19T12:15:38.927")); assertEquals("77777777777", requestBody.getQrCode().getFiscalCode()); assertEquals("city", responseBody.getData().getDebtor().getCity()); @@ -871,10 +871,10 @@ void paGetPaymentIncompleteAddressV2Test() .isEqualTo("Canone Unico Patrimoniale - CORPORATE"); assertThat(responseBody.getData().getDueDate()) .isEqualTo( - DatatypeFactory.newInstance().newXMLGregorianCalendar("2022-04-20T12:15:38.927")); + DatatypeFactory.newInstance().newXMLGregorianCalendar("2125-04-20T12:15:38.927")); assertThat(responseBody.getData().getRetentionDate()) .isEqualTo( - DatatypeFactory.newInstance().newXMLGregorianCalendar("2022-06-19T12:15:38.927")); + DatatypeFactory.newInstance().newXMLGregorianCalendar("2125-06-19T12:15:38.927")); assertEquals("77777777777", requestBody.getQrCode().getFiscalCode()); assertEquals("city", responseBody.getData().getDebtor().getCity()); diff --git a/src/test/resources/gpd/getPaymentOptionWithIncompleteAddress.json b/src/test/resources/gpd/getPaymentOptionWithIncompleteAddress.json index cef1a245..c79422f9 100644 --- a/src/test/resources/gpd/getPaymentOptionWithIncompleteAddress.json +++ b/src/test/resources/gpd/getPaymentOptionWithIncompleteAddress.json @@ -4,8 +4,8 @@ "amount": 10000, "description": "Canone Unico Patrimoniale - CORPORATE", "isPartialPayment": false, - "dueDate": "2022-04-20T12:15:38.927", - "retentionDate": "2022-06-19T12:15:38.927", + "dueDate": "2125-04-20T12:15:38.927", + "retentionDate": "2125-06-19T12:15:38.927", "paymentDate": null, "reportingDate": null, "insertedDate": null,