diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/ContractDslSnippet.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/ContractDslSnippet.java index f9fee052f8..345e4cae3a 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/ContractDslSnippet.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/ContractDslSnippet.java @@ -77,10 +77,6 @@ public class ContractDslSnippet extends TemplatedSnippet { filterHeaders(headers); model.put("response_headers_present", !headers.isEmpty()); model.put("response_headers", headers.entrySet()); - @SuppressWarnings("unchecked") Set jsonPaths = (Set) operation.getAttributes() - .get("contract.jsonPaths"); - model.put("response_json_paths_present", jsonPaths != null && !jsonPaths.isEmpty()); - model.put("response_json_paths", jsonPaths(jsonPaths)); } private Set jsonPaths(Set jsonPaths) { @@ -104,6 +100,10 @@ public class ContractDslSnippet extends TemplatedSnippet { filterHeaders(headers); model.put("request_headers_present", !headers.isEmpty()); model.put("request_headers", headers.entrySet()); + @SuppressWarnings("unchecked") Set jsonPaths = (Set) operation.getAttributes() + .get("contract.jsonPaths"); + model.put("request_json_paths_present", jsonPaths != null && !jsonPaths.isEmpty()); + model.put("request_json_paths", jsonPaths(jsonPaths)); } private void filterHeaders(Map headers) { diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/WireMockSnippet.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/WireMockSnippet.java index cec2f7ab04..59713a9178 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/WireMockSnippet.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/WireMockSnippet.java @@ -16,6 +16,14 @@ package org.springframework.cloud.contract.wiremock.restdocs; +import java.io.IOException; +import java.io.Writer; +import java.util.Arrays; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.regex.Pattern; + import com.github.tomakehurst.wiremock.client.MappingBuilder; import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder; import com.github.tomakehurst.wiremock.common.Json; @@ -23,6 +31,7 @@ import com.github.tomakehurst.wiremock.http.HttpHeader; import com.github.tomakehurst.wiremock.http.HttpHeaders; import com.github.tomakehurst.wiremock.matching.UrlPattern; import com.github.tomakehurst.wiremock.stubbing.StubMapping; + import org.springframework.http.MediaType; import org.springframework.restdocs.RestDocumentationContext; import org.springframework.restdocs.operation.Operation; @@ -31,17 +40,8 @@ import org.springframework.restdocs.snippet.Snippet; import org.springframework.restdocs.snippet.StandardWriterResolver; import org.springframework.restdocs.snippet.WriterResolver; import org.springframework.restdocs.templates.TemplateFormat; -import org.springframework.util.PropertyPlaceholderHelper; import org.springframework.util.StringUtils; -import java.io.IOException; -import java.io.Writer; -import java.util.Arrays; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.Set; -import java.util.regex.Pattern; - import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.delete; import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; @@ -72,9 +72,6 @@ public class WireMockSnippet implements Snippet { private boolean hasJsonBodyRequestToMatch = false; - private final PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper( - "{", "}"); - private static final TemplateFormat TEMPLATE_FORMAT = new TemplateFormat() { @Override @@ -100,9 +97,8 @@ public class WireMockSnippet implements Snippet { RestDocumentationContextPlaceholderResolverFactory placeholders = new RestDocumentationContextPlaceholderResolverFactory(); WriterResolver writerResolver = new StandardWriterResolver(placeholders, "UTF-8", TEMPLATE_FORMAT); - String path = this.propertyPlaceholderHelper.replacePlaceholders(operation.getName(), - placeholders.create(context)); - try (Writer writer = writerResolver.resolve(this.snippetName, path, context)) { + try (Writer writer = writerResolver.resolve(this.snippetName, operation.getName(), + context)) { writer.append(json); } } diff --git a/spring-cloud-contract-wiremock/src/main/resources/org/springframework/restdocs/templates/default-dsl-contract-only.snippet b/spring-cloud-contract-wiremock/src/main/resources/org/springframework/restdocs/templates/default-dsl-contract-only.snippet index 4180c7e4cf..14c4bdeacb 100644 --- a/spring-cloud-contract-wiremock/src/main/resources/org/springframework/restdocs/templates/default-dsl-contract-only.snippet +++ b/spring-cloud-contract-wiremock/src/main/resources/org/springframework/restdocs/templates/default-dsl-contract-only.snippet @@ -16,6 +16,13 @@ Contract.make { {{/request_headers}} } {{/request_headers_present}} + {{#request_json_paths_present}} + stubMatchers { + {{#request_json_paths}} + jsonPath('''{{jsonPath}}''', byEquality()) + {{/request_json_paths}} + } + {{/request_json_paths_present}} } response { status {{response_status}} @@ -31,12 +38,5 @@ Contract.make { {{/response_headers}} } {{/response_headers_present}} - {{#response_json_paths_present}} - testMatchers { - {{#response_json_paths}} - jsonPath('''{{jsonPath}}''', byType()) - {{/response_json_paths}} - } - {{/response_json_paths_present}} } } \ No newline at end of file diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/restdocs/ContractDslSnippetTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/restdocs/ContractDslSnippetTests.java index 5e7d598665..e79284651e 100644 --- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/restdocs/ContractDslSnippetTests.java +++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/restdocs/ContractDslSnippetTests.java @@ -91,10 +91,10 @@ public class ContractDslSnippetTests { then(parsedContract.getRequest().getUrl().getClientValue()).isNotNull(); then(parsedContract.getRequest().getUrl().getClientValue().toString()).startsWith("/"); then(parsedContract.getRequest().getBody().getClientValue()).isNotNull(); + then(parsedContract.getRequest().getMatchers().hasMatchers()).isTrue(); then(parsedContract.getResponse().getStatus().getClientValue()).isNotNull(); then(parsedContract.getResponse().getHeaders().getEntries()).isNotEmpty(); then(parsedContract.getResponse().getBody().getClientValue()).isNotNull(); - then(parsedContract.getResponse().getMatchers().hasMatchers()).isTrue(); } @Test