Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added unit test #9

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
237 changes: 109 additions & 128 deletions openapi/openapi.json
Original file line number Diff line number Diff line change
@@ -1,170 +1,151 @@
{
"openapi": "3.0.1",
"info": {
"description": "A service that permits to handle nodoInviaRPT and nodoInviaCarrelloRPT request from WISP, converting them in NMU payments.\n\n**STANDARD ERRORS:**\nNAME | CODE | DESCRIPTION\n- | - | -\n**WIC-500** | *ERROR* | *...error description...*\n**WIC-1000** | *GENERIC_ERROR* | Error while executing conversion flow. *...error description...*\n**WIC-1001** | *PARSING_GENERIC_ERROR* | Error while parsing payload. *...error description...*\n**WIC-1002** | *PARSING_INVALID_HEADER* | Error while parsing payload. The SOAP header in payload is invalid: *...error description...*\n**WIC-1003** | *PARSING_INVALID_BODY* | Error while parsing payload. The SOAP body in payload is invalid: *...error description...*\n**WIC-1004** | *PARSING_INVALID_XML_NODES* | Error while parsing payload. The list of nodes extracted from document must be greater than zero, but currently it is zero.\n**WIC-1005** | *PARSING_INVALID_ZIPPED_PAYLOAD* | Error while parsing payload. Cannot unzip payload correctly.\n**WIC-1006** | *PARSING_PRIMITIVE_NOT_VALID* | Error while checking primitive. Primitive [*...content...*] not valid.\n**WIC-1100** | *VALIDATION_INVALID_MULTIBENEFICIARY_CART* | Error while generating debt position for GPD service. The cart is defined as multi-beneficiary but there are a number of RPTs lower than 2.\n**WIC-1101** | *VALIDATION_INVALID_IBANS* | Error while generating debt position for GPD service. The IBAN field must be set if digital stamp is not defined for the transfer.\n**WIC-1102** | *VALIDATION_INVALID_DEBTOR* | Error while generating debt position for GPD service. The debtor subject information is different between the various RPT of the cart.\n**WIC-1103** | *VALIDATION_INVALID_CREDITOR_INSTITUTION* | Error while generating debt position for GPD service. The creditor institution information is different between the various RPT of the cart.\n**WIC-1200** | *CONFIGURATION_INVALID_STATION* | Error while generating cart for Checkout service. No valid station found with code [*...content...*].\n**WIC-1201** | *CONFIGURATION_INVALID_STATION_REDIRECT_URL* | Error while generating cart for Checkout service. The station with code [*...content...*] contains wrong redirect URL and it is not possible to generate valid URI.\n**WIC-2000** | *PERSISTENCE_RPT_NOT_FOUND* | Error while retrieving RPT. RPT with sessionId [*...content...*] not found.\n**WIC-2001** | *PERSISTENCE_REQUESTID_CACHING_ERROR* | Error while caching RequestID. *...error description...*\n**WIC-3000** | *CLIENT_APICONFIGCACHE* | Error while communicating with APIConfig cache service. *...error description...*\n**WIC-3001** | *CLIENT_GPD* | Error while communicating with GPD service. *...error description...*\n**WIC-3002** | *CLIENT_IUVGENERATOR* | Error while communicating with IUV Generator service. *...error description...*\n**WIC-3003** | *CLIENT_DECOUPLER_CACHING* | Error while communicating with decoupler caching API. *...error description...*\n**WIC-3004** | *CLIENT_CHECKOUT* | Error while communicating with Checkout service. *...error description...*\n**WIC-3005** | *CLIENT_CHECKOUT_NO_REDIRECT_LOCATION* | Error while communicating with Checkout service. No valid 'Location' header was found,\n**WIC-3006** | *CLIENT_CHECKOUT_INVALID_REDIRECT_LOCATION* | Error while communicating with Checkout service. An empty 'Location' header was found.\n",
"termsOfService": "https://www.pagopa.gov.it/",
"title": "WISP Converter",
"version": "0.0.7"
"openapi" : "3.0.1",
"info" : {
"description" : "A service that permits to handle nodoInviaRPT and nodoInviaCarrelloRPT request from WISP, converting them in NMU payments.\n\n**STANDARD ERRORS:**\nNAME | CODE | DESCRIPTION\n- | - | -\n**WIC-500** | *ERROR* | *...error description...*\n**WIC-1000** | *GENERIC_ERROR* | Error while executing conversion flow. *...error description...*\n**WIC-1001** | *PARSING_GENERIC_ERROR* | Error while parsing payload. *...error description...*\n**WIC-1002** | *PARSING_INVALID_HEADER* | Error while parsing payload. The SOAP header in payload is invalid: *...error description...*\n**WIC-1003** | *PARSING_INVALID_BODY* | Error while parsing payload. The SOAP body in payload is invalid: *...error description...*\n**WIC-1004** | *PARSING_INVALID_XML_NODES* | Error while parsing payload. The list of nodes extracted from document must be greater than zero, but currently it is zero.\n**WIC-1005** | *PARSING_INVALID_ZIPPED_PAYLOAD* | Error while parsing payload. Cannot unzip payload correctly.\n**WIC-1006** | *PARSING_PRIMITIVE_NOT_VALID* | Error while checking primitive. Primitive [*...content...*] not valid.\n**WIC-1100** | *VALIDATION_INVALID_MULTIBENEFICIARY_CART* | Error while generating debt position for GPD service. The cart is defined as multi-beneficiary but there are a number of RPTs lower than 2.\n**WIC-1101** | *VALIDATION_INVALID_IBANS* | Error while generating debt position for GPD service. The IBAN field must be set if digital stamp is not defined for the transfer.\n**WIC-1102** | *VALIDATION_INVALID_DEBTOR* | Error while generating debt position for GPD service. The debtor subject information is different between the various RPT of the cart.\n**WIC-1103** | *VALIDATION_INVALID_CREDITOR_INSTITUTION* | Error while generating debt position for GPD service. The creditor institution information is different between the various RPT of the cart.\n**WIC-1200** | *CONFIGURATION_INVALID_STATION* | Error while generating cart for Checkout service. No valid station found with code [*...content...*].\n**WIC-1201** | *CONFIGURATION_INVALID_STATION_REDIRECT_URL* | Error while generating cart for Checkout service. The station with code [*...content...*] contains wrong redirect URL and it is not possible to generate valid URI.\n**WIC-2000** | *PERSISTENCE_RPT_NOT_FOUND* | Error while retrieving RPT. RPT with sessionId [*...content...*] not found.\n**WIC-2001** | *PERSISTENCE_REQUESTID_CACHING_ERROR* | Error while caching RequestID. *...error description...*\n**WIC-3000** | *CLIENT_APICONFIGCACHE* | Error while communicating with APIConfig cache service. *...error description...*\n**WIC-3001** | *CLIENT_GPD* | Error while communicating with GPD service. *...error description...*\n**WIC-3002** | *CLIENT_IUVGENERATOR* | Error while communicating with IUV Generator service. *...error description...*\n**WIC-3003** | *CLIENT_DECOUPLER_CACHING* | Error while communicating with decoupler caching API. *...error description...*\n**WIC-3004** | *CLIENT_CHECKOUT* | Error while communicating with Checkout service. *...error description...*\n**WIC-3005** | *CLIENT_CHECKOUT_NO_REDIRECT_LOCATION* | Error while communicating with Checkout service. No valid 'Location' header was found,\n**WIC-3006** | *CLIENT_CHECKOUT_INVALID_REDIRECT_LOCATION* | Error while communicating with Checkout service. An empty 'Location' header was found.\n",
"termsOfService" : "https://www.pagopa.gov.it/",
"title" : "WISP Converter",
"version" : "0.0.7"
},
"servers": [
{
"url": "http://localhost",
"description": "Generated server url"
}
],
"tags": [
{
"description": "Application info APIs",
"name": "Home"
},
{
"description": "Conversion and redirection APIs",
"name": "Redirect"
}
],
"paths": {
"/info": {
"get": {
"operationId": "healthCheck",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AppInfoResponse"
"servers" : [ {
"url" : "http://localhost",
"description" : "Generated server url"
} ],
"tags" : [ {
"description" : "Application info APIs",
"name" : "Home"
}, {
"description" : "Conversion and redirection APIs",
"name" : "Redirect"
} ],
"paths" : {
"/info" : {
"get" : {
"operationId" : "healthCheck",
"responses" : {
"200" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AppInfoResponse"
}
}
},
"description": "OK.",
"headers": {
"X-Request-Id": {
"description": "This header identifies the call",
"schema": {
"type": "string"
"description" : "OK.",
"headers" : {
"X-Request-Id" : {
"description" : "This header identifies the call",
"schema" : {
"type" : "string"
}
}
}
}
},
"security": [
{
"ApiKey": []
}
],
"summary": "Return OK if application is started",
"tags": [
"Home"
]
"security" : [ {
"ApiKey" : [ ]
} ],
"summary" : "Return OK if application is started",
"tags" : [ "Home" ]
},
"parameters": [
{
"description": "This header identifies the call, if not passed it is self-generated. This ID is returned in the response.",
"in": "header",
"name": "X-Request-Id",
"schema": {
"type": "string"
}
"parameters" : [ {
"description" : "This header identifies the call, if not passed it is self-generated. This ID is returned in the response.",
"in" : "header",
"name" : "X-Request-Id",
"schema" : {
"type" : "string"
}
]
} ]
},
"/redirect": {
"get": {
"operationId": "redirect_1",
"parameters": [
{
"example": "identificativoIntermediarioPA_sessionId",
"in": "query",
"name": "sessionId",
"required": true,
"schema": {
"type": "string"
}
"/redirect" : {
"get" : {
"operationId" : "redirect_1",
"parameters" : [ {
"example" : "identificativoIntermediarioPA_sessionId",
"in" : "query",
"name" : "sessionId",
"required" : true,
"schema" : {
"type" : "string"
}
],
"responses": {
"200": {
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/RedirectResponse"
} ],
"responses" : {
"200" : {
"content" : {
"*/*" : {
"schema" : {
"$ref" : "#/components/schemas/RedirectResponse"
}
}
},
"description": "Redirect info to Checkout service.",
"headers": {
"X-Request-Id": {
"description": "This header identifies the call",
"schema": {
"type": "string"
"description" : "Redirect info to Checkout service.",
"headers" : {
"X-Request-Id" : {
"description" : "This header identifies the call",
"schema" : {
"type" : "string"
}
}
}
},
"302": {
"description": "Redirect to Checkout service.",
"headers": {
"X-Request-Id": {
"description": "This header identifies the call",
"schema": {
"type": "string"
"302" : {
"description" : "Redirect to Checkout service.",
"headers" : {
"X-Request-Id" : {
"description" : "This header identifies the call",
"schema" : {
"type" : "string"
}
}
}
}
},
"security": [
{
"ApiKey": []
}
],
"tags": [
"Redirect"
]
"security" : [ {
"ApiKey" : [ ]
} ],
"tags" : [ "Redirect" ]
},
"parameters": [
{
"description": "This header identifies the call, if not passed it is self-generated. This ID is returned in the response.",
"in": "header",
"name": "X-Request-Id",
"schema": {
"type": "string"
}
"parameters" : [ {
"description" : "This header identifies the call, if not passed it is self-generated. This ID is returned in the response.",
"in" : "header",
"name" : "X-Request-Id",
"schema" : {
"type" : "string"
}
]
} ]
}
},
"components": {
"schemas": {
"AppInfoResponse": {
"type": "object",
"properties": {
"environment": {
"type": "string"
"components" : {
"schemas" : {
"AppInfoResponse" : {
"type" : "object",
"properties" : {
"environment" : {
"type" : "string"
},
"name": {
"type": "string"
"name" : {
"type" : "string"
},
"version": {
"type": "string"
"version" : {
"type" : "string"
}
}
},
"RedirectResponse": {
"type": "object",
"properties": {
"redirect-url": {
"type": "string"
"RedirectResponse" : {
"type" : "object",
"properties" : {
"redirect-url" : {
"type" : "string"
}
}
}
},
"securitySchemes": {
"ApiKey": {
"description": "The API key to access this function app.",
"in": "header",
"name": "Ocp-Apim-Subscription-Key",
"type": "apiKey"
"securitySchemes" : {
"ApiKey" : {
"description" : "The API key to access this function app.",
"in" : "header",
"name" : "Ocp-Apim-Subscription-Key",
"type" : "apiKey"
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,18 @@
import it.gov.pagopa.wispconverter.service.model.*;
import it.gov.pagopa.wispconverter.service.model.paymentrequest.PaymentRequestDTO;
import it.gov.pagopa.wispconverter.util.Constants;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClientException;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Service
@Slf4j
@RequiredArgsConstructor
Expand All @@ -32,8 +29,6 @@ public class DebtPositionService {

private final DebtPositionMapper mapper;

private final Pattern taxonomyPattern = Pattern.compile("([^/]++/[^/]++)/?");

@Value("${wisp-converter.poste-italiane.abi-code}")
private String posteItalianeABICode;

Expand Down Expand Up @@ -207,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);
Expand All @@ -219,21 +212,21 @@ private it.gov.pagopa.gen.wispconverter.client.gpd.model.TransferModelDto extrac
transfer.setPostalIban(isPostalIBAN(iban) ? iban : null);
transfer.setOrganizationFiscalCode(organizationFiscalCode);
}

return transfer;
}

private String getTaxonomy(TransferDTO transferDTO) {
String taxonomy = transferDTO.getCategory();
Matcher matcher = taxonomyPattern.matcher(taxonomy);
if (matcher.find()) {
taxonomy = matcher.group(1);
int firstlash = taxonomy.indexOf('/');
int lastslash = taxonomy.lastIndexOf('/');
if(firstlash != lastslash && lastslash>=0){
taxonomy = taxonomy.substring(0,lastslash);
}
return taxonomy;
}

private boolean isPostalIBAN(String iban) {
return iban != null && iban.substring(5, 10).equals(posteItalianeABICode);
return iban.substring(5, 10).equals(posteItalianeABICode);
}

private String calculateIUPD(String creditorInstitutionBroker) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
((HttpServletResponse) response).setHeader(HEADER_REQUEST_ID, requestId);

filterChain.doFilter(request, response);
MDC.clear();
}

@Override
Expand Down
Loading
Loading