diff --git a/modules/citrus-core/src/main/java/com/consol/citrus/validation/matcher/hamcrest/HamcrestValidationMatcher.java b/modules/citrus-core/src/main/java/com/consol/citrus/validation/matcher/hamcrest/HamcrestValidationMatcher.java index 0b10579e7b..97e9536c40 100644 --- a/modules/citrus-core/src/main/java/com/consol/citrus/validation/matcher/hamcrest/HamcrestValidationMatcher.java +++ b/modules/citrus-core/src/main/java/com/consol/citrus/validation/matcher/hamcrest/HamcrestValidationMatcher.java @@ -22,11 +22,16 @@ import com.consol.citrus.validation.matcher.ValidationMatcher; import org.hamcrest.Matcher; import org.hamcrest.Matchers; -import org.springframework.util.*; +import org.springframework.util.Assert; +import org.springframework.util.ReflectionUtils; +import org.springframework.util.StringUtils; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; @@ -173,14 +178,14 @@ private Matcher getMatcher(String matcherName, String[] matcherParameter) { * @param value * @return */ - private Set getCollection(String value) { + private List getCollection(String value) { String arrayString = value; if (arrayString.startsWith("[") && arrayString.endsWith("]")) { arrayString = arrayString.substring(1, arrayString.length()-1); } - return StringUtils.commaDelimitedListToSet(arrayString); + return Arrays.asList(StringUtils.commaDelimitedListToStringArray(arrayString)); } /** diff --git a/modules/citrus-core/src/test/java/com/consol/citrus/validation/matcher/hamcrest/HamcrestValidationMatcherTest.java b/modules/citrus-core/src/test/java/com/consol/citrus/validation/matcher/hamcrest/HamcrestValidationMatcherTest.java index c82648ffd0..14ccaf9206 100644 --- a/modules/citrus-core/src/test/java/com/consol/citrus/validation/matcher/hamcrest/HamcrestValidationMatcherTest.java +++ b/modules/citrus-core/src/test/java/com/consol/citrus/validation/matcher/hamcrest/HamcrestValidationMatcherTest.java @@ -68,7 +68,9 @@ public Object[][] testData() { new Object[]{"foo", "9", Collections.singletonList("lessThanOrEqualTo(9)")}, new Object[]{"foo", "", Arrays.asList("1", "lessThanOrEqualTo(9)")}, new Object[]{"foo", "", Arrays.asList("9", "lessThanOrEqualTo(9)")}, - new Object[]{"foo", "[value1,value2,value3,value4,value5]", Collections.singletonList("hasSize(5)") } + new Object[]{"foo", "[value1,value2,value3,value4,value5]", Collections.singletonList("hasSize(5)") }, + new Object[]{"foo", "[\"unique_value\",\"different_unique_value\"]", Collections.singletonList("hasSize(2)") }, + new Object[]{"foo", "[\"duplicate_value\",\"duplicate_value\"]", Collections.singletonList("hasSize(2)") } }; } @@ -113,4 +115,4 @@ public Object[][] testDataFailed() { new Object[]{"foo", "[value1,value2]", Collections.singletonList("hasSize(5)") } }; } -} \ No newline at end of file +} diff --git a/modules/citrus-integration/src/it/resources/com/consol/citrus/validation/JsonPathValidationIT.xml b/modules/citrus-integration/src/it/resources/com/consol/citrus/validation/JsonPathValidationIT.xml index 623b32c068..5ffc6f0f5c 100644 --- a/modules/citrus-integration/src/it/resources/com/consol/citrus/validation/JsonPathValidationIT.xml +++ b/modules/citrus-integration/src/it/resources/com/consol/citrus/validation/JsonPathValidationIT.xml @@ -22,14 +22,23 @@ - - { - "type" : "read", - "mbean" : "java.lang:type=Memory", - "attribute" : "HeapMemoryUsage", - "path" : "used", - "lastModified": null - } + { + "type": "read", + "mbean": "java.lang:type=Memory", + "attribute": "HeapMemoryUsage", + "path": "used", + "lastModified": null, + "test_array": [ + { + "key_with_identical_values": "identical_value", + "key_with_unique_values": "unique_value" + }, + { + "key_with_identical_values": "identical_value", + "key_with_unique_values": "different_unique_value" + } + ] + } @@ -45,6 +54,8 @@ + + @@ -108,4 +119,4 @@ - \ No newline at end of file +