Skip to content

Commit f061eaa

Browse files
committed
fix: When payloads are not valid jsons compare them as strings
1 parent 77cf441 commit f061eaa

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

src/main/java/com/endava/cats/io/ServiceCaller.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,6 @@ String replacePayloadWithRefData(ServiceData data) {
702702
if (CATS_REMOVE_FIELD.equalsIgnoreCase(String.valueOf(refDataValue))) {
703703
payload = JsonUtils.deleteNode(payload, entry.getKey());
704704
} else {
705-
706705
FuzzingStrategy fuzzingStrategy = FuzzingStrategy.replace().withData(refDataValue);
707706
boolean mergeFuzzing = data.getFuzzedFields().contains(entry.getKey());
708707
payload = FuzzingStrategy.replaceField(payload, entry.getKey(), fuzzingStrategy, mergeFuzzing).json();

src/main/java/com/endava/cats/util/JsonUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ public static String sanitizeToJsonPath(String input) {
136136
* @return true if the 2 inputs are the same as JSON elements, false otherwise
137137
*/
138138
public static boolean equalAsJson(String json1, String json2) {
139+
if (!isValidJson(json1) || !isValidJson(json2)) {
140+
return json1.equalsIgnoreCase(json2);
141+
}
139142
return JsonPath.parse(json1).jsonString().contentEquals(JsonPath.parse(json2).jsonString());
140143
}
141144

src/test/java/com/endava/cats/util/JsonUtilsTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,4 +218,17 @@ void shouldReturnAllFieldsFromJson() {
218218
"anArray[0].arrKey1",
219219
"anArray[1].arrKey2");
220220
}
221+
222+
@Test
223+
void shouldBeEqualAsStrings() {
224+
String s1 = "test";
225+
String s2 = "test";
226+
Assertions.assertThat(JsonUtils.equalAsJson(s1, s2)).isTrue();
227+
}
228+
229+
@ParameterizedTest
230+
@CsvSource({"test, {'test':true}", "{'test':false}, test2", "test, 1"})
231+
void shouldNotBeEqualAsStrings(String s1, String s2) {
232+
Assertions.assertThat(JsonUtils.equalAsJson(s1, s2)).isFalse();
233+
}
221234
}

0 commit comments

Comments
 (0)