FINERACT-1158: Fixing validation for interop action
This commit is contained in:
committed by
Michael Vorburger ⛑️
parent
d9ff0f1317
commit
915193785e
+10
@@ -322,6 +322,16 @@ public class InteropHelper {
|
||||
return response;
|
||||
}
|
||||
|
||||
public String postTransferMissingAction(String transferCode, InteropTransactionRole role) {
|
||||
String url = buildUrl(TRANSFERS_URL);
|
||||
String request = buildTransferJson(transferCode, role);
|
||||
LOG.debug("Calling Interoperable POST Transfer: {}, body: {}", url, request);
|
||||
|
||||
String response = Utils.performServerPost(requestSpec, responseSpec, url, request, null);
|
||||
LOG.debug("Response Interoperable POST Transfer: {}", response);
|
||||
return response;
|
||||
}
|
||||
|
||||
private String buildTransferJson(String transferCode, InteropTransactionRole role) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put(InteropUtil.PARAM_TRANSACTION_CODE, transactionCode);
|
||||
|
||||
+8
@@ -100,6 +100,14 @@ public class InteropTest {
|
||||
interopHelper = new InteropHelper(requestSpec, responseSpec, savingsExternalId, transactionCode);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidateAction() {
|
||||
interopHelper.setResponseSpec(responseClientErrorSpec);
|
||||
interopHelper.postTransferMissingAction(UUID.randomUUID().toString(), InteropTransactionRole.PAYER);
|
||||
interopHelper.postTransfer(UUID.randomUUID().toString(), null, InteropTransactionRole.PAYER);
|
||||
interopHelper.setResponseSpec(responseSpec);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInteroperation() {
|
||||
createClient();
|
||||
|
||||
+9
-1
@@ -26,6 +26,7 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import net.fortuna.ical4j.model.property.RRule;
|
||||
import net.fortuna.ical4j.validate.ValidationException;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -300,6 +301,11 @@ public class DataValidatorBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public DataValidatorBuilder isOneOfEnumValues(Class<? extends Enum<?>> e) {
|
||||
final List<String> enumValuesList = Arrays.asList(Arrays.stream(e.getEnumConstants()).map(Enum::name).toArray(String[]::new));
|
||||
return isOneOfTheseStringValues(enumValuesList);
|
||||
}
|
||||
|
||||
public DataValidatorBuilder isOneOfTheseStringValues(final Object... values) {
|
||||
if (this.value == null && this.ignoreNullValue) {
|
||||
return this;
|
||||
@@ -330,7 +336,9 @@ public class DataValidatorBuilder {
|
||||
|
||||
final String valuesListStr = StringUtils.join(valuesList, ", ");
|
||||
|
||||
if (this.value == null || !valuesList.contains(this.value.toString().toLowerCase())) {
|
||||
List<String> valuesListLowercase = valuesList.stream().map(String::toLowerCase).collect(Collectors.toList());
|
||||
|
||||
if (this.value == null || !valuesListLowercase.contains(this.value.toString().toLowerCase())) {
|
||||
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||
.append(this.parameter).append(".is.not.one.of.expected.enumerations");
|
||||
final StringBuilder defaultEnglishMessage = new StringBuilder("The parameter ").append(this.parameter)
|
||||
|
||||
+16
@@ -30,6 +30,8 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.DELETE;
|
||||
import javax.ws.rs.DefaultValue;
|
||||
@@ -45,7 +47,10 @@ import javax.ws.rs.core.UriInfo;
|
||||
import org.apache.fineract.commands.domain.CommandWrapper;
|
||||
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
|
||||
import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper;
|
||||
import org.apache.fineract.infrastructure.core.data.ApiParameterError;
|
||||
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
||||
import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
|
||||
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
|
||||
import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
||||
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||
@@ -365,6 +370,17 @@ public class InteropApiResource {
|
||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = InteropTransferResponseData.class))) })
|
||||
public String performTransfer(@QueryParam("action") @Parameter(description = "action") String action,
|
||||
@Parameter(hidden = true) String quotesJson, @Context UriInfo uriInfo) {
|
||||
|
||||
final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
|
||||
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("InteropApi");
|
||||
|
||||
baseDataValidator.reset().parameter("action").value(action).notNull().isOneOfEnumValues(InteropTransferActionType.class);
|
||||
|
||||
if (!dataValidationErrors.isEmpty()) {
|
||||
throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.",
|
||||
dataValidationErrors);
|
||||
}
|
||||
|
||||
CommandWrapper commandRequest = new InteropWrapperBuilder().performTransfer(InteropTransferActionType.valueOf(action))
|
||||
.withJson(quotesJson).build();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user