Support pattern properties in messaging contracts (#564)
This commit is contained in:
committed by
Marcin Grzejszczak
parent
1862f6674a
commit
c4ab64757f
@@ -35,6 +35,8 @@ import java.util.regex.Pattern
|
|||||||
@ToString(includePackage = false, includeNames = true)
|
@ToString(includePackage = false, includeNames = true)
|
||||||
class Input extends Common {
|
class Input extends Common {
|
||||||
|
|
||||||
|
@Delegate ClientPatternValueDslProperty property = new ClientPatternValueDslProperty()
|
||||||
|
|
||||||
DslProperty<String> messageFrom
|
DslProperty<String> messageFrom
|
||||||
ExecutionProperty triggeredBy
|
ExecutionProperty triggeredBy
|
||||||
Headers messageHeaders = new Headers()
|
Headers messageHeaders = new Headers()
|
||||||
@@ -111,6 +113,17 @@ class Input extends Common {
|
|||||||
closure.delegate = this.matchers
|
closure.delegate = this.matchers
|
||||||
closure()
|
closure()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CompileStatic
|
||||||
|
@EqualsAndHashCode(includeFields = true)
|
||||||
|
@ToString(includePackage = false)
|
||||||
|
private class ClientPatternValueDslProperty extends PatternValueDslProperty<ClientDslProperty> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ClientDslProperty createProperty(Pattern pattern, Object generatedValue) {
|
||||||
|
return new ClientDslProperty(pattern, generatedValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ import java.util.regex.Pattern
|
|||||||
@ToString(includePackage = false, includeNames = true)
|
@ToString(includePackage = false, includeNames = true)
|
||||||
class OutputMessage extends Common {
|
class OutputMessage extends Common {
|
||||||
|
|
||||||
|
@Delegate ServerPatternValueDslProperty property = new ServerPatternValueDslProperty()
|
||||||
|
|
||||||
DslProperty<String> sentTo
|
DslProperty<String> sentTo
|
||||||
Headers headers
|
Headers headers
|
||||||
DslProperty body
|
DslProperty body
|
||||||
@@ -82,6 +84,17 @@ class OutputMessage extends Common {
|
|||||||
closure.delegate = this.matchers
|
closure.delegate = this.matchers
|
||||||
closure()
|
closure()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CompileStatic
|
||||||
|
@EqualsAndHashCode(includeFields = true)
|
||||||
|
@ToString(includePackage = false)
|
||||||
|
private class ServerPatternValueDslProperty extends PatternValueDslProperty<ServerDslProperty> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ServerDslProperty createProperty(Pattern pattern, Object generatedValue) {
|
||||||
|
return new ServerDslProperty(pattern, generatedValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@CompileStatic
|
@CompileStatic
|
||||||
|
|||||||
@@ -66,6 +66,36 @@ class ContractSpec extends Specification {
|
|||||||
noExceptionThrown()
|
noExceptionThrown()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def 'should work for messaging with pattern properties'() {
|
||||||
|
when:
|
||||||
|
Contract.make {
|
||||||
|
input {
|
||||||
|
messageFrom('input')
|
||||||
|
messageBody([
|
||||||
|
foo: anyNonBlankString()
|
||||||
|
])
|
||||||
|
messageHeaders {
|
||||||
|
header([
|
||||||
|
foo: anyNumber()
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
outputMessage {
|
||||||
|
sentTo('output')
|
||||||
|
body([
|
||||||
|
foo2: anyNonEmptyString()
|
||||||
|
])
|
||||||
|
headers {
|
||||||
|
header([
|
||||||
|
foo2: anyIpAddress()
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then:
|
||||||
|
noExceptionThrown()
|
||||||
|
}
|
||||||
|
|
||||||
def 'should generate a value if only regex is passed for client'() {
|
def 'should generate a value if only regex is passed for client'() {
|
||||||
given:
|
given:
|
||||||
Request request = new Request()
|
Request request = new Request()
|
||||||
|
|||||||
Reference in New Issue
Block a user