From 22d7be7e96cfa7343cc34a1376276b7c555cf1f4 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 8 Nov 2019 14:31:00 +0100 Subject: [PATCH] Ensures that regex is asserted also for RegexProperty not only Pattern fixes gh-1200 --- .../contract/spec/internal/Common.groovy | 8 ++++++++ .../spec/internal/ContractSpec.groovy | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Common.groovy b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Common.groovy index b8fca2e9c6..16d560f454 100644 --- a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Common.groovy +++ b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Common.groovy @@ -244,6 +244,14 @@ class Common { assert value ==~ pattern } + void assertThatSidesMatch(RegexProperty pattern, String value) { + assert value ==~ pattern.pattern + } + + void assertThatSidesMatch(String value, RegexProperty pattern) { + assert value ==~ pattern.pattern + } + void assertThatSidesMatch(MatchingStrategy firstSide, MatchingStrategy secondSide) { if (firstSide.type == MatchingStrategy.Type.ABSENT && secondSide.type != MatchingStrategy.Type.ABSENT) { throwAbsentError() diff --git a/spring-cloud-contract-spec/src/test/groovy/org/springframework/cloud/contract/spec/internal/ContractSpec.groovy b/spring-cloud-contract-spec/src/test/groovy/org/springframework/cloud/contract/spec/internal/ContractSpec.groovy index de2506e850..c6a6bbf60e 100644 --- a/spring-cloud-contract-spec/src/test/groovy/org/springframework/cloud/contract/spec/internal/ContractSpec.groovy +++ b/spring-cloud-contract-spec/src/test/groovy/org/springframework/cloud/contract/spec/internal/ContractSpec.groovy @@ -16,6 +16,7 @@ package org.springframework.cloud.contract.spec.internal +import spock.lang.Issue import spock.lang.Specification import org.springframework.cloud.contract.spec.Contract @@ -422,4 +423,23 @@ then: expect: contract != null } + + @Issue("1200") + def 'should fail when regex do not match the concrete value'() { + when: + Contract.make { + request { + method 'GET' + url '/any' + } + response { + status OK() + body([ + time: $(p(regex(iso8601WithOffset())),c( "thisIsNotADate")) + ]) + } + } + then: + thrown(AssertionError) + } }