From 5b7fef0f7494b4cddfed668de08bd866330b3db6 Mon Sep 17 00:00:00 2001 From: Koki Igarashi Date: Thu, 24 Mar 2022 00:49:28 +0900 Subject: [PATCH 1/4] fix #1667: Add missing multipart support in Spock (#1763) Currently, the multipart support for EXPLICIT and WEBCLIENTTEST modes in Spock is missing. This commit adds the support. Fixes #1667 --- .../verifier/builder/RestAssuredGiven.java | 4 +- .../builder/SpockExplicitMultipartGiven.java | 68 +++++++++++++++++++ .../SpockWebTestClientMultipartGiven.java | 68 +++++++++++++++++++ .../SpringTestMethodBodyBuildersSpec.groovy | 11 ++- 4 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockExplicitMultipartGiven.java create mode 100644 spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockWebTestClientMultipartGiven.java diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java index 2caa8e0c79..84e15323ba 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java @@ -43,7 +43,9 @@ class RestAssuredGiven implements Given, BodyMethodVisitor, RestAssuredAcceptor .addAll(Arrays.asList(new MockMvcHeadersGiven(blockBuilder), new MockMvcCookiesGiven(blockBuilder), new MockMvcBodyGiven(blockBuilder, generatedClassMetaData, bodyParser), new JavaMultipartGiven(blockBuilder, generatedClassMetaData, bodyParser), - new SpockMockMvcMultipartGiven(blockBuilder, generatedClassMetaData, bodyParser))); + new SpockMockMvcMultipartGiven(blockBuilder, generatedClassMetaData, bodyParser), + new SpockExplicitMultipartGiven(blockBuilder, generatedClassMetaData, bodyParser), + new SpockWebTestClientMultipartGiven(blockBuilder, generatedClassMetaData, bodyParser))); } @Override diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockExplicitMultipartGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockExplicitMultipartGiven.java new file mode 100644 index 0000000000..ba341ed66c --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockExplicitMultipartGiven.java @@ -0,0 +1,68 @@ +package org.springframework.cloud.contract.verifier.builder; + +import java.util.Map; + +import org.springframework.cloud.contract.spec.internal.NamedProperty; +import org.springframework.cloud.contract.spec.internal.Request; +import org.springframework.cloud.contract.verifier.config.TestFramework; +import org.springframework.cloud.contract.verifier.file.SingleContractMetadata; +import org.springframework.cloud.contract.verifier.util.ContentUtils; +import org.springframework.cloud.contract.verifier.util.MapConverter; + +class SpockExplicitMultipartGiven implements Given, ExplicitAcceptor { + + private final BlockBuilder blockBuilder; + + private final GeneratedClassMetaData generatedClassMetaData; + + private final BodyReader bodyReader; + + private final BodyParser bodyParser; + + SpockExplicitMultipartGiven(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData, + BodyParser bodyParser) { + this.blockBuilder = blockBuilder; + this.bodyReader = new BodyReader(generatedClassMetaData); + this.bodyParser = bodyParser; + this.generatedClassMetaData = generatedClassMetaData; + } + + @Override + public MethodVisitor apply(SingleContractMetadata metadata) { + getMultipartParameters(metadata).entrySet() + .forEach(entry -> this.blockBuilder.addLine(getMultipartParameterLine(metadata, entry))); + return this; + } + + private String getMultipartParameterLine(SingleContractMetadata metadata, Map.Entry parameter) { + if (parameter.getValue() instanceof NamedProperty) { + return ".multiPart(" + getMultipartFileParameterContent(metadata, parameter.getKey(), + (NamedProperty) parameter.getValue()) + ")"; + } + return getParameterString(parameter); + } + + @SuppressWarnings("unchecked") + private Map getMultipartParameters(SingleContractMetadata metadata) { + return (Map) metadata.getContract().getRequest().getMultipart().getServerValue(); + } + + private String getMultipartFileParameterContent(SingleContractMetadata metadata, String propertyName, + NamedProperty propertyValue) { + return ContentUtils.getGroovyMultipartFileParameterContent(propertyName, propertyValue, + fileProp -> this.bodyReader.readBytesFromFileString(metadata, fileProp, CommunicationType.REQUEST)); + } + + private String getParameterString(Map.Entry parameter) { + return ".param(" + this.bodyParser.quotedShortText(parameter.getKey()) + ", " + + this.bodyParser.quotedShortText(MapConverter.getTestSideValuesForNonBody(parameter.getValue())) + ")"; + } + + @Override + public boolean accept(SingleContractMetadata metadata) { + Request request = metadata.getContract().getRequest(); + return request != null && request.getMultipart() != null && acceptType(this.generatedClassMetaData) + && this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.SPOCK; + } + +} diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockWebTestClientMultipartGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockWebTestClientMultipartGiven.java new file mode 100644 index 0000000000..c7f754bcc2 --- /dev/null +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/SpockWebTestClientMultipartGiven.java @@ -0,0 +1,68 @@ +package org.springframework.cloud.contract.verifier.builder; + +import java.util.Map; + +import org.springframework.cloud.contract.spec.internal.NamedProperty; +import org.springframework.cloud.contract.spec.internal.Request; +import org.springframework.cloud.contract.verifier.config.TestFramework; +import org.springframework.cloud.contract.verifier.file.SingleContractMetadata; +import org.springframework.cloud.contract.verifier.util.ContentUtils; +import org.springframework.cloud.contract.verifier.util.MapConverter; + +public class SpockWebTestClientMultipartGiven implements Given, WebTestClientAcceptor { + + private final BlockBuilder blockBuilder; + + private final GeneratedClassMetaData generatedClassMetaData; + + private final BodyReader bodyReader; + + private final BodyParser bodyParser; + + SpockWebTestClientMultipartGiven(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData, + BodyParser bodyParser) { + this.blockBuilder = blockBuilder; + this.bodyReader = new BodyReader(generatedClassMetaData); + this.bodyParser = bodyParser; + this.generatedClassMetaData = generatedClassMetaData; + } + + @Override + public MethodVisitor apply(SingleContractMetadata metadata) { + getMultipartParameters(metadata).entrySet() + .forEach(entry -> this.blockBuilder.addLine(getMultipartParameterLine(metadata, entry))); + return this; + } + + private String getMultipartParameterLine(SingleContractMetadata metadata, Map.Entry parameter) { + if (parameter.getValue() instanceof NamedProperty) { + return ".multiPart(" + getMultipartFileParameterContent(metadata, parameter.getKey(), + (NamedProperty) parameter.getValue()) + ")"; + } + return getParameterString(parameter); + } + + @SuppressWarnings("unchecked") + private Map getMultipartParameters(SingleContractMetadata metadata) { + return (Map) metadata.getContract().getRequest().getMultipart().getServerValue(); + } + + private String getMultipartFileParameterContent(SingleContractMetadata metadata, String propertyName, + NamedProperty propertyValue) { + return ContentUtils.getGroovyMultipartFileParameterContent(propertyName, propertyValue, + fileProp -> this.bodyReader.readBytesFromFileString(metadata, fileProp, CommunicationType.REQUEST)); + } + + private String getParameterString(Map.Entry parameter) { + return ".param(" + this.bodyParser.quotedShortText(parameter.getKey()) + ", " + + this.bodyParser.quotedShortText(MapConverter.getTestSideValuesForNonBody(parameter.getValue())) + ")"; + } + + @Override + public boolean accept(SingleContractMetadata metadata) { + Request request = metadata.getContract().getRequest(); + return request != null && request.getMultipart() != null && acceptType(this.generatedClassMetaData) + && this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.SPOCK; + } + +} diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy index bd1a525f12..4f8ef0e798 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy @@ -1659,7 +1659,7 @@ World.'''""" } - @Issue('180') + @Issue(['180', '1667']) def 'should generate proper test code when having multipart parameters with named as map with #methodBuilderName'() { given: org.springframework.cloud.contract.spec.Contract contractDsl = org.springframework.cloud.contract.spec.Contract.make { @@ -1699,6 +1699,15 @@ World.'''""" "testng" | { configProperties.testFramework = TestFramework.TESTNG } "mockmvc" | { configProperties.testMode = TestMode.MOCKMVC } "webclient" | { configProperties.testMode = TestMode.WEBTESTCLIENT } + "spock-mockmvc" | { + configProperties.testFramework = TestFramework.SPOCK; configProperties.testMode = TestMode.MOCKMVC + } + "spock-explicit" | { + configProperties.testFramework = TestFramework.SPOCK; configProperties.testMode = TestMode.EXPLICIT + } + "spock-webclient" | { + configProperties.testFramework = TestFramework.SPOCK; configProperties.testMode = TestMode.WEBTESTCLIENT + } } @Issue('#216') From 9980eb0e9d209e855ed1b417fe9b0a31014da0f6 Mon Sep 17 00:00:00 2001 From: Koki Igarashi Date: Thu, 24 Mar 2022 22:53:47 +0900 Subject: [PATCH 2/4] fix #1656: Add missing support for JSON values inside arrays in WireMockStub (#1764) Fixes #1656. Currently, numbers, booleans and null inside arrays are double-quoted when converting dsl into stub, which results in generating incorrect json stubs for WireMock. This commit fixes it. --- .../DslToWireMockClientConverterSpec.groovy | 60 +++++++++++++++++++ .../wiremock/BaseWireMockStubStrategy.java | 20 ++++++- .../WireMockResponseStubStrategySpec.groovy | 42 ++++++++++++- 3 files changed, 119 insertions(+), 3 deletions(-) diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockClientConverterSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockClientConverterSpec.groovy index 2bf8b672d6..ebaeb49c32 100755 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockClientConverterSpec.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockClientConverterSpec.groovy @@ -1134,4 +1134,64 @@ class DslToWireMockClientConverterSpec extends Specification { return stubMapping } + @Issue("1656") + def "should convert DSL file to WireMock JSON with array"() { + given: + def converter = new DslToWireMockClientConverter() + and: + File file = tmpFolder.newFile("dsl1656.groovy") + file.write(''' + org.springframework.cloud.contract.spec.Contract.make { + request { + method "GET" + url "/api/foo/61923376" + headers { + accept 'application/json' + } + } + response { + status OK() + headers { + contentType(applicationJson()) + } + //language=JSON + body( + """ + [ + 813146, + 814952, + 813102, + 813282 + ] + """ + ) + } + } + ''') + when: + String json = converter.convertContents("Test", new ContractMetadata(file.toPath(), false, 0, null, + ContractVerifierDslConverter.convertAsCollection(new File("/"), file))).values().first() + then: + JSONAssert.assertEquals(''' + { + "request" : { + "url" : "/api/foo/61923376", + "method" : "GET", + "headers" : { + "Accept" : { + "matches" : "application/json.*" + } + } + }, + "response" : { + "status" : 200, + "body" : "[813146,814952,813102,813282]", + "headers" : { + "Content-Type" : "application/json" + }, + "transformers" : [ "response-template", "spring-cloud-contract" ] + } + }''', json, false) + } + } diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.java index 0b986debda..cb2c551a66 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.java @@ -95,8 +95,15 @@ abstract class BaseWireMockStubStrategy { /** * For the given {@link ContentType} returns the Boolean version of the body. */ - String parseBody(Boolean value, ContentType contentType) { - return value.toString(); + Boolean parseBody(Boolean value, ContentType contentType) { + return value; + } + + /** + * For the given {@link ContentType} returns the Number version of the body. + */ + Number parseBody(Number value, ContentType contentType) { + return value; } /** @@ -156,6 +163,15 @@ abstract class BaseWireMockStubStrategy { else if (l instanceof List) { result.add(parseBody((List) l, contentType)); } + else if (l instanceof Boolean) { + result.add(parseBody((Boolean) l, contentType)); + } + else if (l instanceof Number) { + result.add(parseBody((Number) l, contentType)); + } + else if (l == null) { + result.add(null); + } else { result.add(parseBody(l, contentType)); } 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 index 3bad520dbf..31ad4a6fe3 100644 --- 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 @@ -18,7 +18,6 @@ package org.springframework.cloud.contract.verifier.dsl.wiremock import groovy.json.JsonSlurper import org.springframework.cloud.contract.spec.Contract -import org.springframework.cloud.contract.verifier.converter.YamlContractConverter import org.springframework.cloud.contract.verifier.file.SingleContractMetadata import org.springframework.cloud.contract.verifier.util.ContentType import org.springframework.cloud.contract.verifier.util.MapConverter @@ -95,6 +94,47 @@ class WireMockResponseStubStrategySpec extends Specification { assert body.get("double") instanceof BigDecimal } + @Issue("#1656") + def "should not quote numbers, booleans, and null inside arrays"() { + given: + def irrelevantStatus = 200 + def contract = Contract.make { + request { + method GET() + url "/foo" + } + response { + status irrelevantStatus + body([ + anyPositiveInt(), + anyInteger(), + true, + anyNumber(), + null, + "value" + ]) + } + } + when: + SingleContractMetadata metadata = Stub() + metadata.evaluatedOutputStubContentType >> ContentType.JSON + def subject = new WireMockResponseStubStrategy(contract, metadata) { + @Override + Function parsingClosureForContentType() { + return MapConverter.JSON_PARSING_FUNCTION + } + } + def content = subject.buildClientResponseContent() + then: + List body = new JsonSlurper().parseText(content.body) as List + assert body.getAt(0) instanceof Integer + assert body.getAt(1) instanceof Integer + assert body.getAt(2) instanceof Boolean + assert body.getAt(3) instanceof Number + assert body.getAt(4) == null + assert body.getAt(5) instanceof String + } + def "should convert patterns to proper value"() { given: def contract = Contract.make { From 6300619f3a97a3385e5461dc15bc39b6f3beb829 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 26 Apr 2022 09:22:45 +0200 Subject: [PATCH 3/4] Fixed wrong samples branch --- docs/src/main/asciidoc/_attributes.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/main/asciidoc/_attributes.adoc b/docs/src/main/asciidoc/_attributes.adoc index bab7934a80..03b7a1530e 100644 --- a/docs/src/main/asciidoc/_attributes.adoc +++ b/docs/src/main/asciidoc/_attributes.adoc @@ -30,7 +30,7 @@ :standalone_pact_path: {samples_path}/standalone/dsl :standalone_restdocs_path: {samples_path}/standalone/restdocs :tests_path: {core_path}/tests -:samples_branch: main +:samples_branch: 3.0.x :samples_url: https://raw.githubusercontent.com/spring-cloud-samples/spring-cloud-contract-samples/{samples_branch} :samples_code: https://github.com/spring-cloud-samples/spring-cloud-contract-samples/tree/{samples_branch}/ :doc_samples: {samples_code}/wiremock-jetty From 5f5a2c93bc156306d5f308ffbe45147b717378c0 Mon Sep 17 00:00:00 2001 From: huneea <67728580+jhh992000@users.noreply.github.com> Date: Mon, 20 Jun 2022 23:53:43 +0900 Subject: [PATCH 4/4] fix: support multiple stubs files directories (bug fix) (#1801) * fix: support multiple stubs files directories (bug fix) - fix methods - ResourcesFileSource - child() - ResourcesFileSource - getBinaryFileNamed() - add test case. - add test stubs files. * style: change import order * style: apply checkstyle and add license header. --- .../wiremock/file/ResourcesFileSource.java | 11 +++- .../file/ResourcesFileSourceTest.java | 59 +++++++++++++++++++ .../__files/response-bannerList-error.json | 5 ++ .../__files/response-bannerList-success.json | 17 ++++++ .../__files/response-noticeList-error.json | 5 ++ .../__files/response-noticeList-success.json | 17 ++++++ 6 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/file/ResourcesFileSourceTest.java create mode 100644 spring-cloud-contract-wiremock/src/test/resources/files_banner/__files/response-bannerList-error.json create mode 100644 spring-cloud-contract-wiremock/src/test/resources/files_banner/__files/response-bannerList-success.json create mode 100644 spring-cloud-contract-wiremock/src/test/resources/files_notice/__files/response-noticeList-error.json create mode 100644 spring-cloud-contract-wiremock/src/test/resources/files_notice/__files/response-noticeList-success.json diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/file/ResourcesFileSource.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/file/ResourcesFileSource.java index 4150120734..e5d8c9c263 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/file/ResourcesFileSource.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/file/ResourcesFileSource.java @@ -38,6 +38,7 @@ import static java.util.Arrays.asList; /** * @author Dave Syer * @author Pei-Tang Huang + * @author Hunhee Jung */ public class ResourcesFileSource implements FileSource { @@ -111,7 +112,10 @@ public class ResourcesFileSource implements FileSource { try { UrlResource uri = new UrlResource(resource.getUri()); if (uri.exists()) { - return resource.getBinaryFileNamed(name); + Resource relativeResource = uri.createRelative(name); + if (relativeResource.exists()) { + return resource.getBinaryFileNamed(name); + } } } catch (IOException e) { @@ -147,8 +151,9 @@ public class ResourcesFileSource implements FileSource { for (FileSource resource : this.sources) { try { UrlResource uri = new UrlResource(resource.child(subDirectoryName).getUri()); - if (uri.createRelative(subDirectoryName).exists()) { - childSources.add(resource.child(subDirectoryName)); + if (uri.exists()) { + FileSource child = resource.child(subDirectoryName); + childSources.add(child); } } catch (IOException e) { diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/file/ResourcesFileSourceTest.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/file/ResourcesFileSourceTest.java new file mode 100644 index 0000000000..b7d4ae3d9b --- /dev/null +++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/file/ResourcesFileSourceTest.java @@ -0,0 +1,59 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.wiremock.file; + +import com.github.tomakehurst.wiremock.common.FileSource; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; + +import static org.assertj.core.api.Assertions.assertThat; + +class ResourcesFileSourceTest { + + @DisplayName("find all files in the multiple files directories.") + @Test + void child() { + //given + Resource resource1 = new ClassPathResource("src/test/resources/files_banner"); + Resource resource2 = new ClassPathResource("src/test/resources/files_notice"); + ResourcesFileSource resourcesFileSource = new ResourcesFileSource(resource1, resource2); + + //when + String filesDirName = "__files"; + FileSource fileSource = resourcesFileSource.child(filesDirName); + + //then + assertThat(fileSource).isInstanceOf(ResourcesFileSource.class); + assertThat(fileSource.listFilesRecursively()).hasSize(4); + } + + @DisplayName("find a mapped response file in multiple directories.") + @Test + void getBinaryFileNamed() { + //given + Resource resource1 = new ClassPathResource("src/test/resources/files_banner/__files"); + Resource resource2 = new ClassPathResource("src/test/resources/files_notice/__files"); + ResourcesFileSource resourcesFileSource = new ResourcesFileSource(resource1, resource2); + + //when & then + assertThat(resourcesFileSource.getBinaryFileNamed("response-bannerList-success.json").getStream()).isNotEmpty(); + assertThat(resourcesFileSource.getBinaryFileNamed("response-noticeList-success.json").getStream()).isNotEmpty(); + } +} diff --git a/spring-cloud-contract-wiremock/src/test/resources/files_banner/__files/response-bannerList-error.json b/spring-cloud-contract-wiremock/src/test/resources/files_banner/__files/response-bannerList-error.json new file mode 100644 index 0000000000..0cf2bbf8f8 --- /dev/null +++ b/spring-cloud-contract-wiremock/src/test/resources/files_banner/__files/response-bannerList-error.json @@ -0,0 +1,5 @@ +{ + "successful": false, + "message": "INVALID_PARAMETER", + "result": null +} diff --git a/spring-cloud-contract-wiremock/src/test/resources/files_banner/__files/response-bannerList-success.json b/spring-cloud-contract-wiremock/src/test/resources/files_banner/__files/response-bannerList-success.json new file mode 100644 index 0000000000..2e4173a1ec --- /dev/null +++ b/spring-cloud-contract-wiremock/src/test/resources/files_banner/__files/response-bannerList-success.json @@ -0,0 +1,17 @@ +{ + "results": [ + { + "seq": 1, + "title": "1111111111111111111111111", + "content": "1111111111111111111111111111111", + "regDate": "2022/06/17" + }, + { + "seq": 2, + "title": "22222222222222222222222222", + "content": "2222222222222222222222222222222", + "regDate": "2022/06/18" + } + ] +} + diff --git a/spring-cloud-contract-wiremock/src/test/resources/files_notice/__files/response-noticeList-error.json b/spring-cloud-contract-wiremock/src/test/resources/files_notice/__files/response-noticeList-error.json new file mode 100644 index 0000000000..0cf2bbf8f8 --- /dev/null +++ b/spring-cloud-contract-wiremock/src/test/resources/files_notice/__files/response-noticeList-error.json @@ -0,0 +1,5 @@ +{ + "successful": false, + "message": "INVALID_PARAMETER", + "result": null +} diff --git a/spring-cloud-contract-wiremock/src/test/resources/files_notice/__files/response-noticeList-success.json b/spring-cloud-contract-wiremock/src/test/resources/files_notice/__files/response-noticeList-success.json new file mode 100644 index 0000000000..5fe55eb27a --- /dev/null +++ b/spring-cloud-contract-wiremock/src/test/resources/files_notice/__files/response-noticeList-success.json @@ -0,0 +1,17 @@ +{ + "results": [ + { + "seq": 1, + "title": "[AAA] BBBBBBBBBBBBBBB", + "content": "CCCCCCCCCCCCCCCCCCCCCCCCC", + "regDate": "2022/06/17" + }, + { + "seq": 2, + "title": "[BBB] CCCCCCCCCCCCCCCCCCCCCCC", + "content": "DDDDDDDDDDDDDDDDDDD", + "regDate": "2022/06/18" + } + ] +} +