From 82fb1cdac3324633883e0b7118dcf30b0378ee67 Mon Sep 17 00:00:00 2001 From: Axel Hodler Date: Thu, 8 Feb 2018 15:24:19 +0100 Subject: [PATCH] Avoid quoting of floating point numbers --- .../wiremock/BaseWireMockStubStrategy.groovy | 2 +- .../WireMockResponseStubStrategySpec.groovy | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategySpec.groovy diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.groovy index c95f1c0d6b..fff0773842 100755 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.groovy @@ -164,7 +164,7 @@ abstract class BaseWireMockStubStrategy { Map convertedMap = MapConverter.transformValues(value) { it instanceof GString ? it.toString() : it } as Map - return new JSONObject(convertedMap).toString() + return new JSONObject(new JsonBuilder(convertedMap).toString()) } return new JsonBuilder(value).toString() } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategySpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategySpec.groovy new file mode 100644 index 0000000000..3a047d25c3 --- /dev/null +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategySpec.groovy @@ -0,0 +1,26 @@ +package org.springframework.cloud.contract.verifier.dsl.wiremock + +import org.springframework.cloud.contract.spec.Contract +import spock.lang.Specification + +class WireMockResponseStubStrategySpec extends Specification { + def "should not quote floating point numbers"() { + given: + def irrelevantStatus = 200 + def contract = Contract.make { + request { + } + response { + status irrelevantStatus + body([ + value: 1.5 + ]) + } + } + when: + def subject = new WireMockResponseStubStrategy(contract) + def content = subject.buildClientResponseContent() + then: + '{"value":1.5}'.equals(content.body) + } +}