diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientMethodBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientMethodBuilderSpec.groovy index b1716c54f9..82b4a5528b 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientMethodBuilderSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientMethodBuilderSpec.groovy @@ -84,6 +84,21 @@ class JaxRsClientMethodBuilderSpec extends Specification implements WireMockStub } } + @Shared + Contract contractDslWithAbsentCookies = Contract.make { + request { + method "GET" + url "/foo" + cookies { + cookie 'cookie-key': absent() + } + } + response { + status 200 + body([status: 'OK']) + } + } + def "should generate assertions for simple response body with #methodBuilderName"() { given: Contract contractDsl = Contract.make { @@ -1286,6 +1301,19 @@ DATA SyntaxChecker.tryToCompile("JaxRsClientJUnitMethodBodyBuilder", blockBuilder.toString()) } + def "should not generate cookie assertions with absent value in JAX-RS JUnit test"() { + given: + MethodBodyBuilder builder = new JaxRsClientJUnitMethodBodyBuilder(contractDslWithAbsentCookies, properties) + BlockBuilder blockBuilder = new BlockBuilder(" ") + when: + builder.appendTo(blockBuilder) + def test = blockBuilder.toString() + then: + !test.contains("cookie") + and: + SyntaxChecker.tryToCompile("JaxRsClientJunitMethodBodyBuilder", blockBuilder.toString()) + } + def "should generate test for cookies with string value in JAX-RS Spock test"() { given: MethodBodyBuilder builder = new JaxRsClientSpockMethodRequestProcessingBodyBuilder(contractDslWithCookiesValue, properties) @@ -1315,4 +1343,17 @@ DATA and: SyntaxChecker.tryToCompile("JaxRsClientSpockMethodRequestProcessingBodyBuilder", blockBuilder.toString()) } + + def "should not generate cookie assertions with absent value in JAX-RS Spock test"() { + given: + MethodBodyBuilder builder = new JaxRsClientSpockMethodRequestProcessingBodyBuilder(contractDslWithAbsentCookies, properties) + BlockBuilder blockBuilder = new BlockBuilder(" ") + when: + builder.appendTo(blockBuilder) + def test = blockBuilder.toString() + then: + !test.contains("cookie") + and: + SyntaxChecker.tryToCompile("JaxRsClientSpockMethodRequestProcessingBodyBuilder", blockBuilder.toString()) + } } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMethodBodyBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMethodBodyBuilderSpec.groovy index 705d3836b7..d6fce5b5da 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMethodBodyBuilderSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMethodBodyBuilderSpec.groovy @@ -88,6 +88,21 @@ class MockMvcMethodBodyBuilderSpec extends Specification implements WireMockStub } } + @Shared + Contract contractDslWithAbsentCookies = Contract.make { + request { + method "GET" + url "/foo" + cookies { + cookie 'cookie-key': absent() + } + } + response { + status 200 + body([status: 'OK']) + } + } + @Shared // tag::contract_with_regex[] Contract dslWithOptionalsInString = Contract.make { @@ -2491,6 +2506,19 @@ DocumentContext parsedJson = JsonPath.parse(json); SyntaxChecker.tryToCompile("MockMvcJUnitMethodBodyBuilder", blockBuilder.toString()) } + def "should not generate JUnit cookie assertion with absent cookie"() { + given: + MethodBodyBuilder builder = new MockMvcJUnitMethodBodyBuilder(contractDslWithAbsentCookies, properties) + BlockBuilder blockBuilder = new BlockBuilder(" ") + when: + builder.appendTo(blockBuilder) + def test = blockBuilder.toString() + then: + !test.contains("cookie") + and: + SyntaxChecker.tryToCompile("MockMvcJUnitMethodBodyBuilder", blockBuilder.toString()) + } + def "should generate spock assertions with cookies"() { given: MethodBodyBuilder builder = new MockMvcSpockMethodRequestProcessingBodyBuilder(contractDslWithCookiesValue, properties) @@ -2521,4 +2549,17 @@ DocumentContext parsedJson = JsonPath.parse(json); SyntaxChecker.tryToCompile("MockMvcSpockMethodRequestProcessingBodyBuilder", blockBuilder.toString()) } + def "should not generate spock cookie assertion with absent cookie"() { + given: + MethodBodyBuilder builder = new MockMvcSpockMethodRequestProcessingBodyBuilder(contractDslWithAbsentCookies, properties) + BlockBuilder blockBuilder = new BlockBuilder(" ") + when: + builder.appendTo(blockBuilder) + def test = blockBuilder.toString() + then: + !test.contains("cookie") + and: + SyntaxChecker.tryToCompile("MockMvcSpockMethodRequestProcessingBodyBuilder", blockBuilder.toString()) + } + }