+ @Pact(consumer="EmailServicesConsumer")
+ public RequestResponsePact getExistingUserByEmail(PactDslWithProvider builder) {
+ return builder
+ .given("User with email pact@juplo.de exists")
+ .uponReceiving("Request for user with email pact@juplo.de")
+ .path("/get")
+ .query("email=pact@juplo.de")
+ .method("GET")
+ .willRespondWith()
+ .status(200)
+ .headers(Map.of("Content-Type", "application/json;charset=UTF-8"))
+ .body("{\"id\": \"123e4567-e89b-12d3-a456-426614174000\", \"email\": \"pact@juplo.de\"}")
+ .toPact();
+ }
+
+ @Test
+ @PactTestFor(pactMethod = "getExistingUserByEmail")
+ public void testGetExistingUserByEmail(MockServer mockServer) {
+ RestTemplate restTemplate = new RestTemplateBuilder().rootUri(mockServer.getUrl()).build();
+ RemoteUsersServiceConsumer usersService = new RemoteUsersServiceConsumer("/get?email={email}", restTemplate);
+ try {
+ Optional<User> result = usersService.getUserByEmail("pact@juplo.de");