Skip to content

Commit

Permalink
[SELC - 5350] feat: updated verifyOnboarding invocation to Onboarding…
Browse files Browse the repository at this point in the history
…MS (#337)
  • Loading branch information
gianmarcoplutino authored Aug 6, 2024
1 parent b8b9ca5 commit fd6967a
Show file tree
Hide file tree
Showing 10 changed files with 93 additions and 27 deletions.
9 changes: 0 additions & 9 deletions app/src/main/resources/swagger/api-docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -475,15 +475,6 @@
"schema" : {
"type" : "string"
}
}, {
"name" : "externalId",
"in" : "query",
"description" : "Institution's unique external identifier",
"required" : false,
"style" : "form",
"schema" : {
"type" : "string"
}
}, {
"name" : "origin",
"in" : "query",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,6 @@ public interface OnboardingMsConnector {
VerifyAggregateResult verifyAggregatesCsv(MultipartFile file);

RecipientCodeStatusResult checkRecipientCode(String originId, String recipientCode);

void verifyOnboarding(String productId, String taxCode, String origin, String originId, String subunitCode);
}
54 changes: 54 additions & 0 deletions connector/rest/docs/openapi/api-selfcare-onboarding-docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,60 @@
} ]
}
},
"/v1/onboarding/verify" : {
"head" : {
"tags" : [ "Onboarding Controller" ],
"summary" : "Verify if the onboarded product is already onboarded for the institution",
"parameters" : [ {
"name" : "origin",
"in" : "query",
"schema" : {
"type" : "string"
}
}, {
"name" : "originId",
"in" : "query",
"schema" : {
"type" : "string"
}
}, {
"name" : "productId",
"in" : "query",
"schema" : {
"type" : "string"
}
}, {
"name" : "subunitCode",
"in" : "query",
"schema" : {
"type" : "string"
}
}, {
"name" : "taxCode",
"in" : "query",
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "OK",
"content" : {
"application/json" : { }
}
},
"401" : {
"description" : "Not Authorized"
},
"403" : {
"description" : "Not Allowed"
}
},
"security" : [ {
"SecurityScheme" : [ ]
} ]
}
},
"/v1/aggregates/verification" : {
"post" : {
"tags" : [ "Aggregates Controller" ],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;

Expand All @@ -31,6 +32,7 @@ public class OnboardingMsConnectorImpl implements OnboardingMsConnector {
private final MsOnboardingTokenApiClient msOnboardingTokenApiClient;
private final MsOnboardingAggregatesApiClient msOnboardingAggregatesApiClient;
private final OnboardingMapper onboardingMapper;
protected static final String REQUIRED_PRODUCT_ID_MESSAGE = "A product Id is required";

public OnboardingMsConnectorImpl(MsOnboardingApiClient msOnboardingApiClient,
MsOnboardingTokenApiClient msOnboardingTokenApiClient,
Expand Down Expand Up @@ -160,4 +162,11 @@ public boolean checkManager(OnboardingData onboardingData) {
public RecipientCodeStatusResult checkRecipientCode(String originId, String recipientCode) {
return onboardingMapper.toRecipientCodeStatusResult(msOnboardingApiClient._v1OnboardingCheckRecipientCodeGet(originId, recipientCode).getBody());
}

public void verifyOnboarding(String productId, String taxCode, String origin, String originId, String subunitCode) {
log.trace("verifyOnboarding start");
Assert.hasText(productId, REQUIRED_PRODUCT_ID_MESSAGE);
msOnboardingApiClient._v1OnboardingVerifyHead(origin, originId, productId, subunitCode, taxCode);
log.trace("verifyOnboarding end");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -443,4 +443,21 @@ void checkRecipientCode() {
verifyNoMoreInteractions(msOnboardingApiClient);
verifyNoMoreInteractions(onboardingMapper);
}

@Test
void verifyOnboardingSubunitCode() {
// given
final String taxCode = "taxCode";
final String subunitCode = "subunitCode";
final String productId = "productId";
final String origin = "origin";
final String originId = "originId";
// when
final Executable executable = () -> onboardingMsConnector.verifyOnboarding(productId, taxCode, origin, originId, subunitCode);
// then
assertDoesNotThrow(executable);
verify(msOnboardingApiClient, times(1))
._v1OnboardingVerifyHead( origin, originId, productId, subunitCode, taxCode);
verifyNoMoreInteractions(msOnboardingApiClient);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public interface InstitutionService {

void verifyOnboarding(String externalInstitutionId, String productId);

void verifyOnboarding(String productId, String externalId, String taxCode, String origin, String originId, String subunitCode);
void verifyOnboarding(String productId, String taxCode, String origin, String originId, String subunitCode);

void checkOrganization(String productId, String fiscalCode, String vatNumber);
MatchInfoResult matchInstitutionAndUser(String externalInstitutionId, User user);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -395,11 +395,11 @@ public void verifyOnboarding(String externalInstitutionId, String productId) {


@Override
public void verifyOnboarding(String productId, String externalId, String taxCode, String origin, String originId, String subunitCode) {
public void verifyOnboarding(String productId, String taxCode, String origin, String originId, String subunitCode) {
log.trace("verifyOnboardingSubunit start");
log.debug("verifyOnboardingSubunit taxCode = {}", taxCode);
validateOnboarding(taxCode, productId);
partyConnector.verifyOnboarding(productId, externalId, taxCode, origin, originId, subunitCode);
onboardingMsConnector.verifyOnboarding(productId, taxCode, origin, originId, subunitCode);
log.trace("verifyOnboardingSubunit end");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1079,18 +1079,17 @@ void verifyOnboardingInfo_notAllowed() {
final String taxCode = "taxCode";
final String subunitCode = "subunitCode";
final String productId = "productId";
final String externalId = "externalId";
final String origin = "origin";
final String originId = "originId";
// when
final Executable executable = () -> institutionService.verifyOnboarding(productId, externalId, taxCode, origin, originId, subunitCode);
final Executable executable = () -> institutionService.verifyOnboarding(productId, taxCode, origin, originId, subunitCode);
// then
final Exception e = assertThrows(OnboardingNotAllowedException.class, executable);
assertEquals("Institution with external id '" + taxCode + "' is not allowed to onboard '" + productId + "' product", e.getMessage());
verify(onboardingValidationStrategyMock, times(1))
.validate(productId, taxCode);
verifyNoMoreInteractions(onboardingValidationStrategyMock);
verifyNoInteractions(productsConnectorMock, userConnectorMock, partyConnectorMock);
verifyNoInteractions(productsConnectorMock, userConnectorMock, onboardingMsConnector);
}

@Test
Expand All @@ -1099,20 +1098,19 @@ void verifyOnboardingInfo_allowed() {
final String taxCode = "taxCode";
final String subunitCode = "subunitCode";
final String productId = "productId";
final String externalId = "externalId";
final String origin = "origin";
final String originId = "originId";
when(onboardingValidationStrategyMock.validate(productId, taxCode))
.thenReturn(true);
// when
final Executable executable = () -> institutionService.verifyOnboarding(productId, externalId, taxCode, origin, originId, subunitCode);
final Executable executable = () -> institutionService.verifyOnboarding(productId, taxCode, origin, originId, subunitCode);
// then
assertDoesNotThrow(executable);
verify(onboardingValidationStrategyMock, times(1))
.validate(productId, taxCode);
verify(partyConnectorMock, times(1))
.verifyOnboarding(productId, externalId, taxCode, origin, originId, subunitCode);
verifyNoMoreInteractions(onboardingValidationStrategyMock, partyConnectorMock);
verify(onboardingMsConnector, times(1))
.verifyOnboarding(productId, taxCode, origin, originId, subunitCode);
verifyNoMoreInteractions(onboardingValidationStrategyMock, onboardingMsConnector);
verifyNoInteractions(productsConnectorMock, userConnectorMock);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,6 @@ public void verifyOnboarding(@ApiParam("${swagger.onboarding.institutions.model.
@ApiParam("${swagger.onboarding.product.model.id}")
@RequestParam("productId")
String productId,
@ApiParam("${swagger.onboarding.institutions.model.externalId}")
@RequestParam(value = "externalId", required = false)
String externalId,
@ApiParam("${swagger.onboarding.institutions.model.origin}")
@RequestParam(value = "origin", required = false)
String origin,
Expand All @@ -228,7 +225,7 @@ public void verifyOnboarding(@ApiParam("${swagger.onboarding.institutions.model.
if (VerifyType.EXTERNAL.equals(type) && vatNumber.isPresent() && (PROD_FD.getValue().equals(productId) || PROD_FD_GARANTITO.getValue().equals(productId))) {
institutionService.checkOrganization(productId, taxCode, vatNumber.get());
} else
institutionService.verifyOnboarding(productId, externalId, taxCode, origin, originId, subunitCode);
institutionService.verifyOnboarding(productId, taxCode, origin, originId, subunitCode);
log.trace("verifyOnboarding end");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -344,14 +344,12 @@ void verifyOnboarding2() throws Exception {
String productId = "prod-fd";
String taxCode = "taxCode";
String subunitCode = "subunitCode";
String externalId = "externalId";
String origin = "origin";
String originId = "originId";
//when
mvc.perform(MockMvcRequestBuilders
.head(BASE_URL + "/onboarding")
.queryParam("productId", productId)
.queryParam("externalId", externalId)
.queryParam("taxCode", taxCode)
.queryParam("origin", origin)
.queryParam("originId", originId)
Expand All @@ -361,7 +359,7 @@ void verifyOnboarding2() throws Exception {
.accept(APPLICATION_JSON_VALUE))
.andExpect(status().isNoContent());
//then
verify(institutionServiceMock, times(1)).verifyOnboarding(productId, externalId, taxCode, origin, originId, subunitCode);
verify(institutionServiceMock, times(1)).verifyOnboarding(productId, taxCode, origin, originId, subunitCode);
}
@Test
void getInstitutionsByUserId() throws Exception {
Expand Down

0 comments on commit fd6967a

Please sign in to comment.