From efe5af98e68d0fd991f4068177f3b1cd56ff2b38 Mon Sep 17 00:00:00 2001 From: gianmarcoplutino <119858159+gianmarcoplutino@users.noreply.github.com> Date: Mon, 22 Jul 2024 17:11:16 +0200 Subject: [PATCH] [SELC - 5274] feat: Added new API to check recipientCode (#334) --- app/src/main/resources/swagger/api-docs.json | 83 +++++++++++++++++++ connector-api/pom.xml | 2 +- .../connector/api/OnboardingMsConnector.java | 3 + .../model/RecipientCodeStatusResult.java | 9 ++ .../openapi/api-selfcare-onboarding-docs.json | 76 +++++++++++++---- .../connector/OnboardingMsConnectorImpl.java | 6 ++ .../rest/mapper/OnboardingMapper.java | 3 + .../OnboardingMsConnectorImplTest.java | 27 ++++++ core/pom.xml | 6 ++ .../onboarding/core/InstitutionService.java | 3 + .../core/InstitutionServiceImpl.java | 10 +++ .../core/InstitutionServiceImplTest.java | 15 ++++ .../controller/InstitutionV2Controller.java | 17 +++- .../web/model/RecipientCodeStatus.java | 9 ++ .../mapper/OnboardingResourceMapper.java | 3 + .../resources/swagger/swagger_en.properties | 1 + .../InstitutionV2ControllerTest.java | 19 +++++ 17 files changed, 271 insertions(+), 21 deletions(-) create mode 100644 connector-api/src/main/java/it/pagopa/selfcare/onboarding/connector/model/RecipientCodeStatusResult.java create mode 100644 web/src/main/java/it/pagopa/selfcare/onboarding/web/model/RecipientCodeStatus.java diff --git a/app/src/main/resources/swagger/api-docs.json b/app/src/main/resources/swagger/api-docs.json index 6f386ab9..9e10b1dc 100644 --- a/app/src/main/resources/swagger/api-docs.json +++ b/app/src/main/resources/swagger/api-docs.json @@ -1464,6 +1464,89 @@ } ] } }, + "/v2/institutions/onboarding/recipientCode/verification" : { + "get" : { + "tags" : [ "institutions" ], + "summary" : "checkRecipientCode", + "description" : "The service allows to verify if recipientCode is valid or not", + "operationId" : "checkRecipientCodeUsingGET", + "parameters" : [ { + "name" : "originId", + "in" : "query", + "description" : "originId", + "required" : true, + "style" : "form", + "schema" : { + "type" : "string" + } + }, { + "name" : "recipientCode", + "in" : "query", + "description" : "recipientCode", + "required" : true, + "style" : "form", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "enum" : [ "ACCEPTED", "DENIED_NO_ASSOCIATION", "DENIED_NO_BILLING" ] + } + } + } + }, + "400" : { + "description" : "Bad Request", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + }, + "401" : { + "description" : "Unauthorized", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + }, + "404" : { + "description" : "Not Found", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + }, + "500" : { + "description" : "Internal Server Error", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + } + }, + "security" : [ { + "bearerAuth" : [ "global" ] + } ] + } + }, "/v1/product/{id}" : { "get" : { "tags" : [ "product" ], diff --git a/connector-api/pom.xml b/connector-api/pom.xml index 4650747b..fcf8d7de 100644 --- a/connector-api/pom.xml +++ b/connector-api/pom.xml @@ -14,7 +14,7 @@ it.pagopa.selfcare onboarding-sdk-product - 0.1.15 + 0.1.18 diff --git a/connector-api/src/main/java/it/pagopa/selfcare/onboarding/connector/api/OnboardingMsConnector.java b/connector-api/src/main/java/it/pagopa/selfcare/onboarding/connector/api/OnboardingMsConnector.java index a0f0ea88..2633da99 100644 --- a/connector-api/src/main/java/it/pagopa/selfcare/onboarding/connector/api/OnboardingMsConnector.java +++ b/connector-api/src/main/java/it/pagopa/selfcare/onboarding/connector/api/OnboardingMsConnector.java @@ -1,5 +1,6 @@ package it.pagopa.selfcare.onboarding.connector.api; +import it.pagopa.selfcare.onboarding.connector.model.RecipientCodeStatusResult; import it.pagopa.selfcare.onboarding.connector.model.institutions.VerifyAggregateResult; import it.pagopa.selfcare.onboarding.connector.model.onboarding.OnboardingData; import org.springframework.core.io.Resource; @@ -38,4 +39,6 @@ public interface OnboardingMsConnector { boolean checkManager(OnboardingData onboardingData); VerifyAggregateResult verifyAggregatesCsv(MultipartFile file); + + RecipientCodeStatusResult checkRecipientCode(String originId, String recipientCode); } diff --git a/connector-api/src/main/java/it/pagopa/selfcare/onboarding/connector/model/RecipientCodeStatusResult.java b/connector-api/src/main/java/it/pagopa/selfcare/onboarding/connector/model/RecipientCodeStatusResult.java new file mode 100644 index 00000000..6372f0bf --- /dev/null +++ b/connector-api/src/main/java/it/pagopa/selfcare/onboarding/connector/model/RecipientCodeStatusResult.java @@ -0,0 +1,9 @@ +package it.pagopa.selfcare.onboarding.connector.model; + + +public enum RecipientCodeStatusResult { + ACCEPTED, + DENIED_NO_BILLING, + DENIED_NO_ASSOCIATION +} + diff --git a/connector/rest/docs/openapi/api-selfcare-onboarding-docs.json b/connector/rest/docs/openapi/api-selfcare-onboarding-docs.json index 9ca9e6fb..b5fb3dc5 100644 --- a/connector/rest/docs/openapi/api-selfcare-onboarding-docs.json +++ b/connector/rest/docs/openapi/api-selfcare-onboarding-docs.json @@ -23,6 +23,46 @@ "name" : "support" } ], "paths" : { + "/v1/onboarding/checkRecipientCode" : { + "get" : { + "tags" : [ "Onboarding Controller" ], + "summary" : "check if recipientCode is valid or not", + "parameters" : [ { + "name" : "originId", + "in" : "query", + "schema" : { + "type" : "string" + } + }, { + "name" : "recipientCode", + "in" : "query", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/RecipientCodeStatus" + } + } + } + }, + "401" : { + "description" : "Not Authorized" + }, + "403" : { + "description" : "Not Allowed" + } + }, + "security" : [ { + "SecurityScheme" : [ ] + } ] + } + }, "/v1/aggregates/verification" : { "post" : { "tags" : [ "Aggregates Controller" ], @@ -1633,6 +1673,26 @@ "type" : "string", "example" : "2022-03-10T12:15:50" }, + "RecipientCodeStatus" : { + "enum" : [ "DENIED_NO_BILLING", "DENIED_NO_ASSOCIATION", "ACCEPTED" ], + "type" : "string" + }, + "RowError" : { + "required" : [ "row" ], + "type" : "object", + "properties" : { + "row" : { + "format" : "int32", + "type" : "integer" + }, + "cf" : { + "type" : "string" + }, + "reason" : { + "type" : "string" + } + } + }, "OnboardingDefaultRequest" : { "required" : [ "productId", "users", "institution" ], "type" : "object", @@ -2060,22 +2120,6 @@ } } }, - "RowError" : { - "required" : [ "row", "cf" ], - "type" : "object", - "properties" : { - "row" : { - "format" : "int32", - "type" : "integer" - }, - "cf" : { - "type" : "string" - }, - "reason" : { - "type" : "string" - } - } - }, "TokenResponse" : { "type" : "object", "properties" : { diff --git a/connector/rest/src/main/java/it/pagopa/selfcare/onboarding/connector/OnboardingMsConnectorImpl.java b/connector/rest/src/main/java/it/pagopa/selfcare/onboarding/connector/OnboardingMsConnectorImpl.java index 06c55dd8..d5ba8f93 100644 --- a/connector/rest/src/main/java/it/pagopa/selfcare/onboarding/connector/OnboardingMsConnectorImpl.java +++ b/connector/rest/src/main/java/it/pagopa/selfcare/onboarding/connector/OnboardingMsConnectorImpl.java @@ -4,6 +4,7 @@ import it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType; import it.pagopa.selfcare.onboarding.common.InstitutionType; import it.pagopa.selfcare.onboarding.connector.api.OnboardingMsConnector; +import it.pagopa.selfcare.onboarding.connector.model.RecipientCodeStatusResult; import it.pagopa.selfcare.onboarding.connector.model.institutions.VerifyAggregateResult; import it.pagopa.selfcare.onboarding.connector.model.onboarding.OnboardingData; import it.pagopa.selfcare.onboarding.connector.rest.client.MsOnboardingAggregatesApiClient; @@ -154,4 +155,9 @@ public boolean checkManager(OnboardingData onboardingData) { String result = msOnboardingApiClient._v1OnboardingCheckManagerPost(onboardingMapper.toOnboardingUsersRequest(onboardingData)).getBody(); return Boolean.parseBoolean(result); } + + @Override + public RecipientCodeStatusResult checkRecipientCode(String originId, String recipientCode) { + return onboardingMapper.toRecipientCodeStatusResult(msOnboardingApiClient._v1OnboardingCheckRecipientCodeGet(originId, recipientCode).getBody()); + } } diff --git a/connector/rest/src/main/java/it/pagopa/selfcare/onboarding/connector/rest/mapper/OnboardingMapper.java b/connector/rest/src/main/java/it/pagopa/selfcare/onboarding/connector/rest/mapper/OnboardingMapper.java index 7846180a..c4191512 100644 --- a/connector/rest/src/main/java/it/pagopa/selfcare/onboarding/connector/rest/mapper/OnboardingMapper.java +++ b/connector/rest/src/main/java/it/pagopa/selfcare/onboarding/connector/rest/mapper/OnboardingMapper.java @@ -1,6 +1,7 @@ package it.pagopa.selfcare.onboarding.connector.rest.mapper; +import it.pagopa.selfcare.onboarding.connector.model.RecipientCodeStatusResult; import it.pagopa.selfcare.onboarding.connector.model.institutions.VerifyAggregateResult; import it.pagopa.selfcare.onboarding.connector.model.onboarding.DataProtectionOfficer; import it.pagopa.selfcare.onboarding.connector.model.onboarding.GeographicTaxonomy; @@ -133,4 +134,6 @@ default String setOrigin(Origin origin) { OnboardingPaRequest toOnboardingPaAggregationRequest(OnboardingData onboardingData); VerifyAggregateResult toVerifyAggregateResult(VerifyAggregateResponse body); + + RecipientCodeStatusResult toRecipientCodeStatusResult(RecipientCodeStatus recipientCodeStatus); } diff --git a/connector/rest/src/test/java/it/pagopa/selfcare/onboarding/connector/OnboardingMsConnectorImplTest.java b/connector/rest/src/test/java/it/pagopa/selfcare/onboarding/connector/OnboardingMsConnectorImplTest.java index 7631c9b6..4f237b14 100644 --- a/connector/rest/src/test/java/it/pagopa/selfcare/onboarding/connector/OnboardingMsConnectorImplTest.java +++ b/connector/rest/src/test/java/it/pagopa/selfcare/onboarding/connector/OnboardingMsConnectorImplTest.java @@ -1,6 +1,7 @@ package it.pagopa.selfcare.onboarding.connector; import it.pagopa.selfcare.onboarding.common.InstitutionType; +import it.pagopa.selfcare.onboarding.connector.model.RecipientCodeStatusResult; import it.pagopa.selfcare.onboarding.connector.model.institutions.Institution; import it.pagopa.selfcare.onboarding.connector.model.onboarding.*; import it.pagopa.selfcare.onboarding.connector.model.onboarding.DataProtectionOfficer; @@ -416,4 +417,30 @@ void checkManager() { ._v1OnboardingCheckManagerPost(request); verifyNoMoreInteractions(msOnboardingApiClient); } + + @Test + void checkRecipientCode() { + // given + final String recipientCode = "recipientCode"; + final String originId = "originId"; + RecipientCodeStatus expectedStatusResult = RecipientCodeStatus.ACCEPTED; + ResponseEntity responseEntity = ResponseEntity.ok(expectedStatusResult); + + when(msOnboardingApiClient._v1OnboardingCheckRecipientCodeGet(recipientCode, originId)) + .thenReturn(responseEntity); + when(onboardingMapper.toRecipientCodeStatusResult(responseEntity.getBody())) + .thenReturn(RecipientCodeStatusResult.ACCEPTED); + + // when + final Executable executable = () -> onboardingMsConnector.checkRecipientCode(recipientCode, originId); + + // then + assertDoesNotThrow(executable); + verify(msOnboardingApiClient, times(1)) + ._v1OnboardingCheckRecipientCodeGet(recipientCode, originId); + verify(onboardingMapper, times(1)) + .toRecipientCodeStatusResult(responseEntity.getBody()); + verifyNoMoreInteractions(msOnboardingApiClient); + verifyNoMoreInteractions(onboardingMapper); + } } diff --git a/core/pom.xml b/core/pom.xml index 874ff66c..c246a716 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -16,6 +16,12 @@ it.pagopa.selfcare selc-onboarding-connector-api + + it.pagopa.selfcare + onboarding-sdk-common + 0.1.18 + compile + \ No newline at end of file diff --git a/core/src/main/java/it/pagopa/selfcare/onboarding/core/InstitutionService.java b/core/src/main/java/it/pagopa/selfcare/onboarding/core/InstitutionService.java index 8d0690c7..a34d9bd6 100644 --- a/core/src/main/java/it/pagopa/selfcare/onboarding/core/InstitutionService.java +++ b/core/src/main/java/it/pagopa/selfcare/onboarding/core/InstitutionService.java @@ -2,6 +2,7 @@ import it.pagopa.selfcare.onboarding.connector.model.InstitutionLegalAddressData; import it.pagopa.selfcare.onboarding.connector.model.InstitutionOnboardingData; +import it.pagopa.selfcare.onboarding.connector.model.RecipientCodeStatusResult; import it.pagopa.selfcare.onboarding.connector.model.institutions.Institution; import it.pagopa.selfcare.onboarding.connector.model.institutions.InstitutionInfo; import it.pagopa.selfcare.onboarding.connector.model.institutions.MatchInfoResult; @@ -51,4 +52,6 @@ public interface InstitutionService { List getByFilters(String productId, String taxCode, String origin, String originId, String subunitCode); VerifyAggregateResult validateAggregatesCsv(MultipartFile file); + + RecipientCodeStatusResult checkRecipientCode(String originId, String recipientCode); } diff --git a/core/src/main/java/it/pagopa/selfcare/onboarding/core/InstitutionServiceImpl.java b/core/src/main/java/it/pagopa/selfcare/onboarding/core/InstitutionServiceImpl.java index 68b15812..628b3d68 100644 --- a/core/src/main/java/it/pagopa/selfcare/onboarding/core/InstitutionServiceImpl.java +++ b/core/src/main/java/it/pagopa/selfcare/onboarding/core/InstitutionServiceImpl.java @@ -8,6 +8,7 @@ import it.pagopa.selfcare.onboarding.connector.exceptions.ResourceNotFoundException; import it.pagopa.selfcare.onboarding.connector.model.InstitutionLegalAddressData; import it.pagopa.selfcare.onboarding.connector.model.InstitutionOnboardingData; +import it.pagopa.selfcare.onboarding.connector.model.RecipientCodeStatusResult; import it.pagopa.selfcare.onboarding.connector.model.institutions.*; import it.pagopa.selfcare.onboarding.connector.model.institutions.infocamere.InstitutionInfoIC; import it.pagopa.selfcare.onboarding.connector.model.onboarding.GeographicTaxonomy; @@ -474,6 +475,15 @@ public VerifyAggregateResult validateAggregatesCsv(MultipartFile file) { return verifyAggregateResult; } + @Override + public RecipientCodeStatusResult checkRecipientCode(String originId, String recipientCode) { + log.trace("checkRecipientCode start"); + log.debug("checkRecipientCode for institution with originId {} and recipientCode {}", originId, recipientCode); + RecipientCodeStatusResult result = onboardingMsConnector.checkRecipientCode(originId, recipientCode); + log.debug("checkRecipientCode result = {}", result); + log.trace("checkRecipientCode end"); + return result; + } @Override public InstitutionOnboardingData getInstitutionOnboardingData(String externalInstitutionId, String productId) { diff --git a/core/src/test/java/it/pagopa/selfcare/onboarding/core/InstitutionServiceImplTest.java b/core/src/test/java/it/pagopa/selfcare/onboarding/core/InstitutionServiceImplTest.java index b33b9164..a598a146 100644 --- a/core/src/test/java/it/pagopa/selfcare/onboarding/core/InstitutionServiceImplTest.java +++ b/core/src/test/java/it/pagopa/selfcare/onboarding/core/InstitutionServiceImplTest.java @@ -8,6 +8,7 @@ import it.pagopa.selfcare.onboarding.connector.exceptions.ResourceNotFoundException; import it.pagopa.selfcare.onboarding.connector.model.InstitutionLegalAddressData; import it.pagopa.selfcare.onboarding.connector.model.InstitutionOnboardingData; +import it.pagopa.selfcare.onboarding.connector.model.RecipientCodeStatusResult; import it.pagopa.selfcare.onboarding.connector.model.institutions.*; import it.pagopa.selfcare.onboarding.connector.model.institutions.infocamere.BusinessInfoIC; import it.pagopa.selfcare.onboarding.connector.model.institutions.infocamere.InstitutionInfoIC; @@ -1641,6 +1642,20 @@ void validateAggregatesCsvReturnsValidResultWhenErrorsExist() { verifyNoMoreInteractions(onboardingMsConnector); } + @Test + void checkRecipientCode() { + // Given + when(onboardingMsConnector.checkRecipientCode(any(), any())).thenReturn(RecipientCodeStatusResult.ACCEPTED); + + // When + RecipientCodeStatusResult result = institutionService.checkRecipientCode("recipientCode", "originId"); + + // Then + assertEquals(result, RecipientCodeStatusResult.ACCEPTED); + verify(onboardingMsConnector, times(1)).checkRecipientCode(any(), any()); + verifyNoMoreInteractions(onboardingMsConnector); + } + private static InstitutionInfo createInstitutionInfoMock() { return false ? mockInstance(new InstitutionInfo()) : mockInstance(new InstitutionInfo(), "setInstitutionLocation"); diff --git a/web/src/main/java/it/pagopa/selfcare/onboarding/web/controller/InstitutionV2Controller.java b/web/src/main/java/it/pagopa/selfcare/onboarding/web/controller/InstitutionV2Controller.java index e187025e..9754e87a 100644 --- a/web/src/main/java/it/pagopa/selfcare/onboarding/web/controller/InstitutionV2Controller.java +++ b/web/src/main/java/it/pagopa/selfcare/onboarding/web/controller/InstitutionV2Controller.java @@ -11,10 +11,7 @@ import it.pagopa.selfcare.onboarding.common.InstitutionType; import it.pagopa.selfcare.onboarding.core.InstitutionService; -import it.pagopa.selfcare.onboarding.web.model.CompanyOnboardingDto; -import it.pagopa.selfcare.onboarding.web.model.InstitutionResource; -import it.pagopa.selfcare.onboarding.web.model.OnboardingProductDto; -import it.pagopa.selfcare.onboarding.web.model.VerifyAggregatesResponse; +import it.pagopa.selfcare.onboarding.web.model.*; import it.pagopa.selfcare.onboarding.web.model.mapper.InstitutionMapper; import it.pagopa.selfcare.onboarding.web.model.mapper.OnboardingResourceMapper; import lombok.extern.slf4j.Slf4j; @@ -129,4 +126,16 @@ public VerifyAggregatesResponse verifyAggregatesCsv(@RequestParam("aggregates") return response; } + @GetMapping(value = "/onboarding/recipientCode/verification") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "", notes = "${swagger.onboarding.institutions.api.onboarding.checkRecipientCode}") + public RecipientCodeStatus checkRecipientCode(@RequestParam(value = "originId") String originId, + @RequestParam(value = "recipientCode") String recipientCode) { + log.trace("Check recipientCode start"); + log.debug("Check originId start for institution with originId {} and recipientCode {}", originId, recipientCode); + RecipientCodeStatus response = onboardingResourceMapper.toRecipientCodeStatus(institutionService.checkRecipientCode(originId, recipientCode)); + log.trace("Check recipientCode end"); + return response; + } + } diff --git a/web/src/main/java/it/pagopa/selfcare/onboarding/web/model/RecipientCodeStatus.java b/web/src/main/java/it/pagopa/selfcare/onboarding/web/model/RecipientCodeStatus.java new file mode 100644 index 00000000..c2a7ed25 --- /dev/null +++ b/web/src/main/java/it/pagopa/selfcare/onboarding/web/model/RecipientCodeStatus.java @@ -0,0 +1,9 @@ +package it.pagopa.selfcare.onboarding.web.model; + + +public enum RecipientCodeStatus { + ACCEPTED, + DENIED_NO_BILLING, + DENIED_NO_ASSOCIATION +} + diff --git a/web/src/main/java/it/pagopa/selfcare/onboarding/web/model/mapper/OnboardingResourceMapper.java b/web/src/main/java/it/pagopa/selfcare/onboarding/web/model/mapper/OnboardingResourceMapper.java index fd1e24ab..4414b927 100644 --- a/web/src/main/java/it/pagopa/selfcare/onboarding/web/model/mapper/OnboardingResourceMapper.java +++ b/web/src/main/java/it/pagopa/selfcare/onboarding/web/model/mapper/OnboardingResourceMapper.java @@ -2,6 +2,7 @@ import it.pagopa.selfcare.commons.base.security.PartyRole; import it.pagopa.selfcare.onboarding.connector.model.InstitutionLegalAddressData; +import it.pagopa.selfcare.onboarding.connector.model.RecipientCodeStatusResult; import it.pagopa.selfcare.onboarding.connector.model.institutions.Institution; import it.pagopa.selfcare.onboarding.connector.model.institutions.VerifyAggregateResult; import it.pagopa.selfcare.onboarding.connector.model.onboarding.OnboardingData; @@ -91,4 +92,6 @@ default List toAdmin(List users) { } VerifyAggregatesResponse toVerifyAggregatesResponse(VerifyAggregateResult verifyAggregateResult); + + RecipientCodeStatus toRecipientCodeStatus (RecipientCodeStatusResult recipientCodeStatusResult); } diff --git a/web/src/main/resources/swagger/swagger_en.properties b/web/src/main/resources/swagger/swagger_en.properties index 8abd30a3..df6fbc97 100644 --- a/web/src/main/resources/swagger/swagger_en.properties +++ b/web/src/main/resources/swagger/swagger_en.properties @@ -6,6 +6,7 @@ swagger.onboarding.pnPGInstitutions.api.description=PN PG Institution operations swagger.onboarding.product.api.description=Product operations swagger.onboarding.institutions.api.onboarding=The service allows the onboarding of Users to an Institution swagger.onboarding.institutions.api.onboarding.subunit=The service allows the onboarding of Users to a subunit of an Institution +swagger.onboarding.institutions.api.onboarding.checkRecipientCode=The service allows to verify if recipientCode is valid or not swagger.onboarding.institutions.api.getInstitutionOnboardingInfo=The service retrieves the institutions Manager and institution informations swagger.onboarding.institutions.api.getInstitutionGeographicTaxonomy=The service retrieve the institution's geographic taxonomy swagger.onboarding.institutions.api.getInstitutions=The service retrieves all the onboarded institutions related to the logged user diff --git a/web/src/test/java/it/pagopa/selfcare/onboarding/web/controller/InstitutionV2ControllerTest.java b/web/src/test/java/it/pagopa/selfcare/onboarding/web/controller/InstitutionV2ControllerTest.java index bb4f1e79..0002b75b 100644 --- a/web/src/test/java/it/pagopa/selfcare/onboarding/web/controller/InstitutionV2ControllerTest.java +++ b/web/src/test/java/it/pagopa/selfcare/onboarding/web/controller/InstitutionV2ControllerTest.java @@ -199,4 +199,23 @@ void verifyAggregatesCsvFailure() throws Exception { verify(institutionServiceMock, times(1)).validateAggregatesCsv(any(MultipartFile.class)); verifyNoMoreInteractions(institutionServiceMock); } + + @Test + void verifyRecipientCode() throws Exception { + // Given + String recipientCode = "recipientCode"; + String originId = "originId"; + + // When + mvc.perform(MockMvcRequestBuilders + .get(BASE_URL + "/onboarding/recipientCode/verification") + .queryParam( "recipientCode", recipientCode) + .queryParam( "originId", originId) + .contentType(APPLICATION_JSON_VALUE)) + .andExpect(status().isOk()); + + // Then + verify(institutionServiceMock, times(1)).checkRecipientCode(any(), any()); + verifyNoMoreInteractions(institutionServiceMock); + } }