From 4cadced587259d745ad675dc63685612bc419ade Mon Sep 17 00:00:00 2001 From: Andrea De Rinaldis <117269497+andrea-deri@users.noreply.github.com> Date: Fri, 5 Jul 2024 12:22:11 +0200 Subject: [PATCH] fix: add injection of query parameters in returned response (#24) This PR contains a little feature that will enable a great new option for Mocker system. With this feature it is possible to add the passed query parameters as injected parameter for the returned mock response. #### List of Changes - Add injection of query parameters in mock response --- .../mocker/service/validator/ResourceExtractor.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/it/gov/pagopa/mocker/service/validator/ResourceExtractor.java b/src/main/java/it/gov/pagopa/mocker/service/validator/ResourceExtractor.java index c90e3fd..e10a455 100644 --- a/src/main/java/it/gov/pagopa/mocker/service/validator/ResourceExtractor.java +++ b/src/main/java/it/gov/pagopa/mocker/service/validator/ResourceExtractor.java @@ -52,7 +52,7 @@ public ExtractedResponse extract(ExtractedRequest requestData, MockResourceEntit try { UnmarshalledBody unmarshalledBody = extractBodyFields(requestData.getBody(), requestData.getContentType()); MockRuleEntity mockRule = getValidMockRule(mockResource, requestData, unmarshalledBody); - extractedResponse = getMockResponse(mockRule, unmarshalledBody); + extractedResponse = getMockResponse(mockRule, unmarshalledBody, requestData); } catch (IOException | SAXException | JsonSyntaxException e) { throw new MockerParseRequestException(e); } @@ -191,18 +191,25 @@ private boolean isContentCompliantToCondition(Object fieldValue, String conditio } - private ExtractedResponse getMockResponse(MockRuleEntity mockRule, UnmarshalledBody unmarshalledBody) { + private ExtractedResponse getMockResponse(MockRuleEntity mockRule, UnmarshalledBody unmarshalledBody, ExtractedRequest requestData) { MockResponseEntity mockResponse = mockRule.getResponse(); Map dynamicParameters = executeScript(mockRule, unmarshalledBody); List parameters = mockResponse.getParameters(); String decodedBody = Utility.decodeBase64(mockResponse.getBody()); - // + // injecting request body's fields in response if (parameters != null && unmarshalledBody != null) { for (String parameterName : parameters) { String parameterValue = (String) unmarshalledBody.getFieldValue(parameterName); decodedBody = injectParameterValueInDecodedBody(decodedBody, parameterName, parameterValue); } } + // injecting request query parameters in response + if (parameters != null && requestData.getQueryParameters() != null) { + for (String parameterName : parameters) { + String parameterValue = requestData.getQueryParameters().get(parameterName); + decodedBody = injectParameterValueInDecodedBody(decodedBody, parameterName, parameterValue); + } + } // for (Map.Entry parameter : dynamicParameters.entrySet()) { decodedBody = injectParameterValueInDecodedBody(decodedBody, "dynamic." + parameter.getKey(), parameter.getValue());