From ed43e281465ce468df3f20a782ec47e5966e9f0d Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Sat, 21 May 2022 19:59:16 +0200 Subject: [PATCH] WIP --- .../de/juplo/demos/pact/ContractTest.java | 2 +- .../SpringConsumer-Siren Order Provider.json | 88 +++++++++++++++---- 2 files changed, 70 insertions(+), 20 deletions(-) diff --git a/spring-consumer/src/test/java/de/juplo/demos/pact/ContractTest.java b/spring-consumer/src/test/java/de/juplo/demos/pact/ContractTest.java index 610957a..ad2835f 100644 --- a/spring-consumer/src/test/java/de/juplo/demos/pact/ContractTest.java +++ b/spring-consumer/src/test/java/de/juplo/demos/pact/ContractTest.java @@ -40,7 +40,7 @@ public class ContractTest { entities.eachLike(entity -> { - entity.arrayContaining("action", actionsArray-> + entity.arrayContaining("actions", actionsArray-> { actionsArray.object(object -> { diff --git a/spring-consumer/target/pacts/SpringConsumer-Siren Order Provider.json b/spring-consumer/target/pacts/SpringConsumer-Siren Order Provider.json index ae1e66d..f04e0d3 100644 --- a/spring-consumer/target/pacts/SpringConsumer-Siren Order Provider.json +++ b/spring-consumer/target/pacts/SpringConsumer-Siren Order Provider.json @@ -11,23 +11,43 @@ }, "response": { "body": { - "actions": [ - { - "href": "http://localhost:8080/1234", - "method": "PUT", - "name": "update" - }, - { - "href": "http://localhost:8080/1234", - "method": "DELETE", - "name": "delete" - } - ], "class": [ "entity" ], "entities": [ - + [ + { + "action": [ + { + "href": "http://localhost:8080/1234", + "method": "PUT", + "name": "update" + }, + { + "href": "http://localhost:8080/1234", + "method": "DELETE", + "name": "delete" + } + ], + "class": [ + "entity" + ], + "links": [ + { + "href": "http://localhost:8080/orders/RegexpMatcher(regex=\\d+, value=1234)", + "rel": [ + "self" + ] + } + ], + "properties": { + "id": "1234", + "rel": [ + "item" + ] + } + } + ] ], "links": [ { @@ -40,20 +60,25 @@ }, "generators": { "body": { - "$.links[0].href": { - "example": "http://localhost:8080/orders", - "regex": ".*\\/(\\Qorders\\E)$", + "$.entities[0].entities[*].links[0].href": { + "example": "http://localhost:8080/orders/RegexpMatcher(regex=\\d+, value=1234)", + "regex": ".*\\/(\\Qorders\\E\\/\\QRegexpMatcher(regex=\\d+, value=1234)\\E)$", "type": "MockServerURL" }, - "$[0].href": { + "$.entities[0].entities[*][0].href": { "example": "http://localhost:8080/1234", "regex": ".*\\/(\\Q1234\\E)$", "type": "MockServerURL" }, - "$[1].href": { + "$.entities[0].entities[*][1].href": { "example": "http://localhost:8080/1234", "regex": ".*\\/(\\Q1234\\E)$", "type": "MockServerURL" + }, + "$.links[0].href": { + "example": "http://localhost:8080/orders", + "regex": ".*\\/(\\Qorders\\E)$", + "type": "MockServerURL" } } }, @@ -62,7 +87,15 @@ }, "matchingRules": { "body": { - "$.actions": { + "$.entities[0]": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.entities[0].entities[*].action": { "combine": "AND", "matchers": [ { @@ -146,6 +179,23 @@ } ] }, + "$.entities[0].entities[*].links[0].href": { + "combine": "AND", + "matchers": [ + { + "match": "regex", + "regex": ".*\\/(\\Qorders\\E\\/\\QRegexpMatcher(regex=\\d+, value=1234)\\E)$" + } + ] + }, + "$.entities[0].entities[*].properties.id": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, "$.links[0].href": { "combine": "AND", "matchers": [ -- 2.20.1