Skip to content

Commit

Permalink
fix: revert avoiding flatterning JSON when resolving entire payload w…
Browse files Browse the repository at this point in the history
…ith (refs #237)
  • Loading branch information
tomasbjerre committed Oct 8, 2022
1 parent 01e6301 commit a958270
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,12 @@ private Map<String, String> resolveJsonPath(
final String incomingPostContent, final GenericVariable gv) {
try {
final Object resolved = JsonPath.read(incomingPostContent, gv.getExpression());
final Map<String, String> flatterned =
this.jsonFlattener.flattenJson(gv.getVariableName(), gv.getRegexpFilter(), resolved);
if (gv.getExpression().trim().equals("$")) {
final Map<String, String> flatterned = new HashMap<>();
flatterned.put(gv.getVariableName(), incomingPostContent);
return flatterned;
} else {
return this.jsonFlattener.flattenJson(gv.getVariableName(), gv.getRegexpFilter(), resolved);
}
return flatterned;
} catch (final PathNotFoundException e) {
return new HashMap<>();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class VariablesResolverJsonPathTest {
@Test
public void testJSONPathGetOneLeaf() throws Exception {
final String resourceName = "one-leaf.json";
final Map<String, String> variables = this.getJsonPathVariables(resourceName, "$.user");
final Map<String, String> variables = getJsonPathVariables(resourceName, "$.user");

assertThat(variables) //
.containsEntry("variableName_name", "Administrator") //
Expand All @@ -32,7 +32,7 @@ public void testJSONPathGetOneLeaf() throws Exception {
@Test
public void testJSONPathGetTwoLeafs() throws Exception {
final String resourceName = "two-leafs.json";
final Map<String, String> variables = this.getJsonPathVariables(resourceName, "$.user");
final Map<String, String> variables = getJsonPathVariables(resourceName, "$.user");

assertThat(variables) //
.containsEntry("variableName_name", "Administrator") //
Expand All @@ -46,7 +46,7 @@ public void testJSONPathGetTwoLeafs() throws Exception {
@Test
public void testJSONPathGetOneListItem() throws Exception {
final String resourceName = "one-list-item.json";
final Map<String, String> variables = this.getJsonPathVariables(resourceName, "$.user");
final Map<String, String> variables = getJsonPathVariables(resourceName, "$.user");

assertThat(variables.keySet()) //
.containsOnly("variableName", "variableName_0_name");
Expand All @@ -60,20 +60,20 @@ public void testJSONPathGetOneListItem() throws Exception {
@Test
public void testJSONPathGetRootItem() throws Exception {
final String resourceName = "one-list-item.json";
final Map<String, String> variables = this.getJsonPathVariables(resourceName, "$");
final Map<String, String> variables = getJsonPathVariables(resourceName, "$");

assertThat(variables.keySet()) //
.containsOnly("variableName");
.containsOnly("variableName", "variableName_user_0_name");
assertThat(variables.get("variableName").replaceAll("\\n|\\r\\n|\\s", "")) //
.isEqualToIgnoringWhitespace("{\"user\":[{\"name\":\"Administrator\"}]}");
assertThat(variables.get("variableName_user_0_name")) //
.isNull();
.isEqualTo("Administrator");
}

@Test
public void testJSONPathGetTwoListItems() throws Exception {
final String resourceName = "two-list-items.json";
final Map<String, String> variables = this.getJsonPathVariables(resourceName, "$.user");
final Map<String, String> variables = getJsonPathVariables(resourceName, "$.user");

assertThat(variables.keySet()) //
.containsOnly("variableName", "variableName_0_name", "variableName_1_username");
Expand All @@ -89,7 +89,7 @@ public void testJSONPathGetTwoListItems() throws Exception {
@Test
public void testJSONPathGetSeveralMixedListItems() throws Exception {
final String resourceName = "several-mixed-list-items.json";
final Map<String, String> variables = this.getJsonPathVariables(resourceName, "$.user");
final Map<String, String> variables = getJsonPathVariables(resourceName, "$.user");

assertThat(variables) //
.containsEntry("variableName_0_name", "Administrator") //
Expand All @@ -110,7 +110,7 @@ public void testJSONPathGetSeveralMixedListItems() throws Exception {
@Test
public void testJSONPathGetNullValues() throws Exception {
final Map<String, String> variables =
this.getJsonPathVariablesFromContent("$", "{\"a\": null,\"b\": \"value\"}");
getJsonPathVariablesFromContent("$", "{\"a\": null,\"b\": \"value\"}");

assertThat(variables.get("variableName")) //
.isEqualTo("{\"a\": null,\"b\": \"value\"}");
Expand All @@ -119,7 +119,7 @@ public void testJSONPathGetNullValues() throws Exception {
@Test
public void testJSONPathGetAllVariable() throws Exception {
final String resourceName = "gitlab-mergerequest-comment.json";
final String postContent = this.getContent(resourceName);
final String postContent = getContent(resourceName);

final List<GenericVariable> genericVariables =
newArrayList( //
Expand All @@ -134,12 +134,12 @@ public void testJSONPathGetAllVariable() throws Exception {
genericRequestVariables.add(new GenericRequestVariable("reqp2", ""));
final Map<String, String> variables =
new VariablesResolver(
this.headers,
headers,
parameterMap,
postContent,
genericVariables,
genericRequestVariables,
this.genericHeaderVariables)
genericHeaderVariables)
.getVariables();

assertThat(variables) //
Expand Down Expand Up @@ -182,12 +182,12 @@ public void testGenericRequestParameters() throws Exception {

final Map<String, String> variables =
new VariablesResolver(
this.headers,
headers,
parameterMap,
postContent,
genericVariables,
genericRequestVariables,
this.genericHeaderVariables)
genericHeaderVariables)
.getVariables();

assertThat(variables) //
Expand All @@ -203,7 +203,7 @@ public void testGenericRequestParameters() throws Exception {
@Test
public void testJSONPathGetZeroMatchingVariables() throws Exception {
final String resourceName = "gitlab-mergerequest-comment.json";
final String postContent = this.getContent(resourceName);
final String postContent = getContent(resourceName);

final List<GenericVariable> genericVariables =
newArrayList( //
Expand All @@ -212,12 +212,12 @@ public void testJSONPathGetZeroMatchingVariables() throws Exception {
final List<GenericRequestVariable> genericRequestVariables = new ArrayList<>();
final Map<String, String> variables =
new VariablesResolver(
this.headers,
headers,
parameterMap,
postContent,
genericVariables,
genericRequestVariables,
this.genericHeaderVariables)
genericHeaderVariables)
.getVariables();

assertThat(variables) //
Expand All @@ -230,7 +230,7 @@ public void testJSONPathGetZeroMatchingVariables() throws Exception {
@Test
public void testJSONPathGetOneVariable() throws Exception {
final String resourceName = "gitlab-mergerequest-comment.json";
final String postContent = this.getContent(resourceName);
final String postContent = getContent(resourceName);

final List<GenericVariable> genericVariables =
newArrayList( //
Expand All @@ -239,12 +239,12 @@ public void testJSONPathGetOneVariable() throws Exception {
final List<GenericRequestVariable> genericRequestVariables = new ArrayList<>();
final Map<String, String> variables =
new VariablesResolver(
this.headers,
headers,
parameterMap,
postContent,
genericVariables,
genericRequestVariables,
this.genericHeaderVariables)
genericHeaderVariables)
.getVariables();

assertThat(variables) //
Expand All @@ -255,7 +255,7 @@ public void testJSONPathGetOneVariable() throws Exception {
@Test
public void testJSONPathGetTwoVariables() throws Exception {
final String resourceName = "gitlab-mergerequest-comment.json";
final String postContent = this.getContent(resourceName);
final String postContent = getContent(resourceName);

final GenericVariable genericVariable1 = new GenericVariable("user_name", "$.user.name");
genericVariable1.setRegexpFilter("[aA]");
Expand All @@ -267,12 +267,12 @@ public void testJSONPathGetTwoVariables() throws Exception {
final List<GenericRequestVariable> genericRequestVariables = new ArrayList<>();
final Map<String, String> variables =
new VariablesResolver(
this.headers,
headers,
parameterMap,
postContent,
genericVariables,
genericRequestVariables,
this.genericHeaderVariables)
genericHeaderVariables)
.getVariables();

assertThat(variables) //
Expand All @@ -284,7 +284,7 @@ public void testJSONPathGetTwoVariables() throws Exception {
@Test
public void testJSONPathGetNodeVariable() throws Exception {
final String resourceName = "gitlab-mergerequest-comment.json";
final Map<String, String> variables = this.getJsonPathVariables(resourceName, "$.user");
final Map<String, String> variables = getJsonPathVariables(resourceName, "$.user");

assertThat(variables) //
.containsEntry("variableName_name", "Administrator");
Expand All @@ -293,7 +293,7 @@ public void testJSONPathGetNodeVariable() throws Exception {
@Test
public void testJSONPathGetPayloadVariable() throws Exception {
final String resourceName = "gitlab-mergerequest-comment.json";
final String postContent = this.getContent(resourceName);
final String postContent = getContent(resourceName);

final List<GenericVariable> genericVariables =
newArrayList( //
Expand All @@ -302,23 +302,22 @@ public void testJSONPathGetPayloadVariable() throws Exception {
final List<GenericRequestVariable> genericRequestVariables = new ArrayList<>();
final Map<String, String> variables =
new VariablesResolver(
this.headers,
headers,
parameterMap,
postContent,
genericVariables,
genericRequestVariables,
this.genericHeaderVariables)
genericHeaderVariables)
.getVariables();

assertThat(variables) //
.hasSize(1)
.containsEntry("payload", postContent);
.containsEntry("payload_user_name", "Administrator");
}

@Test
public void testJSONPathGetPayloadVariableDefault() throws Exception {
final String resourceName = "gitlab-mergerequest-comment.json";
final String postContent = this.getContent(resourceName);
final String postContent = getContent(resourceName);

final GenericVariable genericVariable = new GenericVariable("payload", "$.doesnotexist");
genericVariable.setDefaultValue("this is the default");
Expand All @@ -329,12 +328,12 @@ public void testJSONPathGetPayloadVariableDefault() throws Exception {
final List<GenericRequestVariable> genericRequestVariables = new ArrayList<>();
final Map<String, String> variables =
new VariablesResolver(
this.headers,
headers,
parameterMap,
postContent,
genericVariables,
genericRequestVariables,
this.genericHeaderVariables)
genericHeaderVariables)
.getVariables();

assertThat(variables) //
Expand All @@ -345,7 +344,7 @@ public void testJSONPathGetPayloadVariableDefault() throws Exception {
public void testStarOperator() throws Exception {
final String resourceName = "github-push-event.json";
final Map<String, String> variables =
this.getJsonPathVariables(resourceName, "$.commits[*].modified[*]");
getJsonPathVariables(resourceName, "$.commits[*].modified[*]");

assertThat(variables.keySet()) //
.containsOnly("variableName", "variableName_0");
Expand All @@ -359,7 +358,7 @@ public void testStarOperator() throws Exception {
public void testCommaOperator() throws Exception {
final String resourceName = "github-push-event.json";
final Map<String, String> variables =
this.getJsonPathVariables(resourceName, "$.commits[*].['modified','added','removed'][*]");
getJsonPathVariables(resourceName, "$.commits[*].['modified','added','removed'][*]");

assertThat(variables.keySet()) //
.containsOnly("variableName", "variableName_0");
Expand All @@ -371,9 +370,9 @@ public void testCommaOperator() throws Exception {

private Map<String, String> getJsonPathVariables(
final String resourceName, final String jsonPath) {
final String postContent = this.getContent(resourceName);
final String postContent = getContent(resourceName);

return this.getJsonPathVariablesFromContent(jsonPath, postContent);
return getJsonPathVariablesFromContent(jsonPath, postContent);
}

private Map<String, String> getJsonPathVariablesFromContent(
Expand All @@ -385,12 +384,12 @@ private Map<String, String> getJsonPathVariablesFromContent(
final List<GenericRequestVariable> genericRequestVariables = new ArrayList<>();
final Map<String, String> variables =
new VariablesResolver(
this.headers,
headers,
parameterMap,
postContent,
genericVariables,
genericRequestVariables,
this.genericHeaderVariables)
genericHeaderVariables)
.getVariables();
return variables;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ Feature: It should be possible to parse JSON post content with JSONPath.
| variable | expression | expressionType | defaultValue | regexpFilter |
| everything | $ | JSONPath | | |

Then variables are resolved to:
| variable | value |
| everything_ref | refs/heads/develop |
| everything_head_commit_committer_name | baxterthehacker |
Then variable everything is resolved to:
"""
{
Expand Down

0 comments on commit a958270

Please sign in to comment.