From 0f91efffd3c7d505fd6e9770ce7df57ac1c0574d Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 13 Jul 2017 12:09:27 +0200 Subject: [PATCH] Fixed the way we treat headers and matching strategies fixes #353 --- .../contract/spec/internal/Header.groovy | 5 +++ .../verifier/dsl/WireMockGroovyDslSpec.groovy | 39 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Header.groovy b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Header.groovy index 09e44fdc37..6e495755eb 100644 --- a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Header.groovy +++ b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Header.groovy @@ -36,6 +36,11 @@ class Header extends DslProperty { this.name = name } + Header(String name, MatchingStrategy value) { + super(value) + this.name = name + } + Header(String name, Object value) { super(value) this.name = name diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/WireMockGroovyDslSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/WireMockGroovyDslSpec.groovy index 13c6dd06fd..0a3db855c6 100755 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/WireMockGroovyDslSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/WireMockGroovyDslSpec.groovy @@ -762,6 +762,45 @@ class WireMockGroovyDslSpec extends Specification implements WireMockStubVerifie stubMappingIsValidWireMockStub(json) } + @Issue("#353") + def "should generate request with absent header for client side"() { + given: + org.springframework.cloud.contract.spec.Contract groovyDsl = org.springframework.cloud.contract.spec.Contract.make { + request { + method 'GET' + urlPath( '/some/path/*') + headers { + header('''Authentication''', absent()) + } + } + response { + status 200 + } + } + when: + def json = toWireMockClientJsonStub(groovyDsl) + then: + AssertionUtil.assertThatJsonsAreEqual((''' + { + "request" : { + "urlPath" : "/some/path/*", + "method" : "GET", + "headers" : { + "Authentication" : { + "absent" : true + } + } + }, + "response" : { + "status" : 200, + "transformers" : [ "response-template" ] + } + } + '''), json) + and: + stubMappingIsValidWireMockStub(json) + } + @Issue('#230') def "should generate request with urlPathPattern and queryParameters for client side\ when both contains regular expressions"() {