[TEST] Make sure that match assertion throws error if run against an object
We had a REST test that relied on matching a json response against a regex. It worked but the match wasn't done against the actual json object, but its java map representation converted into a string by calling `toString`. Since all other clients test runners don't work in this case, as they try to match a json object against a regex, we should do the same and prevent it from working.
This commit is contained in:
parent
dfe67da013
commit
0e67dda15d
|
@ -25,6 +25,7 @@ import java.util.regex.Pattern;
|
|||
|
||||
import static org.elasticsearch.test.hamcrest.RegexMatcher.matches;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.instanceOf;
|
||||
import static org.hamcrest.Matchers.notNullValue;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
|
@ -49,10 +50,12 @@ public class MatchAssertion extends Assertion {
|
|||
if (expectedValue instanceof String) {
|
||||
String expValue = ((String) expectedValue).trim();
|
||||
if (expValue.length() > 2 && expValue.startsWith("/") && expValue.endsWith("/")) {
|
||||
assertThat("field [" + getField() + "] was expected to be of type String but is an instanceof [" + actualValue.getClass() + "]", actualValue, instanceOf(String.class));
|
||||
String stringValue = (String) actualValue;
|
||||
String regex = expValue.substring(1, expValue.length() - 1);
|
||||
logger.trace("assert that [{}] matches [{}]", actualValue, regex);
|
||||
logger.trace("assert that [{}] matches [{}]", stringValue, regex);
|
||||
assertThat("field [" + getField() + "] was expected to match the provided regex but didn't",
|
||||
actualValue.toString(), matches(regex, Pattern.COMMENTS));
|
||||
stringValue, matches(regex, Pattern.COMMENTS));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue