From 15ac841360fbf5f8563a52c0822d8394d2c0f2fa Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 29 Jan 2018 13:49:28 +0000 Subject: [PATCH] Put jsonPaths into request matchers (not response) The correct WireMock JSON stubs should be available after this change. Otherwise the json paths that were applied to the request in the RESTdocs test were being translated into response matchers in the contract (which doesn't even do anything in WireMock). --- .../wiremock/restdocs/ContractDslSnippet.java | 8 ++++---- .../templates/default-dsl-contract-only.snippet | 14 +++++++------- .../wiremock/restdocs/ContractDslSnippetTests.java | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) 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/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