This commit is contained in:
anatoliy-balakirev
2019-08-13 15:28:02 +02:00
committed by Marcin Grzejszczak
parent f1731e018e
commit ca72481d10
3 changed files with 95 additions and 4 deletions

View File

@@ -44,8 +44,15 @@ public class OptionalProperty implements Serializable, CanBeDynamic {
}
public String value() {
return this.value instanceof RegexProperty
? ((RegexProperty) this.value).pattern() : this.value.toString();
if (this.value == null) {
return "";
}
else if (this.value instanceof RegexProperty) {
return ((RegexProperty) this.value).pattern();
}
else {
return this.value.toString();
}
}
protected Pattern optionalPatternValue() {

View File

@@ -34,12 +34,12 @@ interface QueryParamsResolver {
return resolveParamValue(((OptionalProperty) value).optionalPattern());
}
else if (value instanceof MatchingStrategy) {
return ((MatchingStrategy) value).getServerValue().toString();
return resolveParamValue(((MatchingStrategy) value).getServerValue());
}
else if (value instanceof DslProperty) {
return resolveParamValue(((DslProperty) value).getServerValue());
}
return value.toString();
return value == null ? "null" : value.toString();
}
}

View File

@@ -0,0 +1,84 @@
package org.springframework.cloud.contract.verifier.builder
import org.springframework.cloud.contract.spec.internal.DslProperty
import org.springframework.cloud.contract.spec.internal.MatchingStrategy
import org.springframework.cloud.contract.spec.internal.OptionalProperty
import org.springframework.cloud.contract.spec.internal.QueryParameter
import org.springframework.cloud.contract.spec.internal.RegexProperty
import spock.lang.Specification
import java.util.regex.Pattern
class QueryParamsResolverSpec extends Specification {
def 'should return serverValue for QueryParameter'() {
given:
Object parameter = new QueryParameter("some_param", dslProperty)
when:
String resolved = new QueryParamsResolver() {}.resolveParamValue(parameter)
then:
resolved == expected
where:
dslProperty | expected
new DslProperty<String>("client", "server") | "server"
new DslProperty<String>(null, "server") | "server"
new DslProperty<String>("client", null) | "null"
new DslProperty<String>(null, null) | "null"
}
def 'should return optionalPattern for OptionalProperty'() {
given:
Object parameter = new OptionalProperty(value)
when:
String resolved = new QueryParamsResolver() {}.resolveParamValue(parameter)
then:
resolved == expected
where:
value | expected
"server" | "(server)?"
null | "()?"
new RegexProperty(Pattern.compile(".*")) | "(.*)?"
new RegexProperty(null, Pattern.compile(".*")) | "(.*)?"
new RegexProperty(Pattern.compile(".*"), null) | "(.*)?"
new RegexProperty("", Pattern.compile(".*")) | "(.*)?"
new RegexProperty(Pattern.compile(".*"), "") | "(.*)?"
}
def 'should return serverValue for MatchingStrategy'() {
given:
Object parameter = new MatchingStrategy(value, MatchingStrategy.Type.EQUAL_TO)
when:
String resolved = new QueryParamsResolver() {}.resolveParamValue(parameter)
then:
resolved == expected
where:
value | expected
"server" | "server"
null | "null"
new DslProperty<String>("client", "server") | "server"
new DslProperty<String>(null, "server") | "server"
new DslProperty<String>("client", null) | "null"
new DslProperty<String>(null, null) | "null"
}
def 'should return serverValue for DslProperty'() {
when:
String resolved = new QueryParamsResolver() {}.resolveParamValue(parameter)
then:
resolved == expected
where:
parameter | expected
new DslProperty<String>("client", "server") | "server"
new DslProperty<String>(null, "server") | "server"
new DslProperty<String>("client", null) | "null"
new DslProperty<String>(null, null) | "null"
}
def 'should return \"null\" for null'() {
when:
String resolved = new QueryParamsResolver() {}.resolveParamValue(null)
then:
resolved == "null"
}
}