X-Git-Url: https://juplo.de/gitweb/?p=demos%2Fpact;a=blobdiff_plain;f=pwreset%2Fsrc%2Ftest%2Fjava%2Fde%2Fjuplo%2Fdemos%2Fpwreset%2Fadapters%2Fout%2FUsersServiceGatewayContractTest.java;fp=pwreset%2Fsrc%2Ftest%2Fjava%2Fde%2Fjuplo%2Fdemos%2Fpwreset%2Fadapters%2Fout%2FUsersServiceGatewayContractTest.java;h=4ab4c8570ec012b4432cf2e21bbfec68dba177a3;hp=0000000000000000000000000000000000000000;hb=7df01dd4a110b02cf438b8e24d0e8f7b9c025d00;hpb=4356061f7d4ce078b66b1dc0fe346af04dbf1b8f diff --git a/pwreset/src/test/java/de/juplo/demos/pwreset/adapters/out/UsersServiceGatewayContractTest.java b/pwreset/src/test/java/de/juplo/demos/pwreset/adapters/out/UsersServiceGatewayContractTest.java new file mode 100644 index 0000000..4ab4c85 --- /dev/null +++ b/pwreset/src/test/java/de/juplo/demos/pwreset/adapters/out/UsersServiceGatewayContractTest.java @@ -0,0 +1,67 @@ +package de.juplo.demos.pwreset.adapters.out; + +import au.com.dius.pact.consumer.MockServer; +import au.com.dius.pact.consumer.dsl.PactDslWithProvider; +import au.com.dius.pact.consumer.junit5.PactConsumerTestExt; +import au.com.dius.pact.consumer.junit5.PactTestFor; +import au.com.dius.pact.core.model.RequestResponsePact; +import au.com.dius.pact.core.model.annotations.Pact; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; +import java.util.Optional; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; + + +@ExtendWith(PactConsumerTestExt.class) +@PactTestFor(providerName = "UsersProvider") +public class UsersServiceGatewayContractTest +{ + @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\"}") + .toPact(); + } + + @Test + @PactTestFor(pactMethod = "getExistingUserByEmail") + public void testGetExistingUserByEmail(MockServer mockServer) + { + RestTemplate restTemplate = + new RestTemplateBuilder() + .rootUri(mockServer.getUrl()) + .build(); + UsersServiceGateway usersService = + new UsersServiceGateway( + "/get?email={email}", + restTemplate); + try + { + Optional result = + usersService.getUserByEmail("pact@juplo.de"); + + assertThat(result.isPresent()).isTrue(); + assertThat(result.get()).isEqualTo(UUID.fromString("123e4567-e89b-12d3-a456-426614174000")); + } + catch (Exception e) + { + fail("Unexpected exception", e); + } + } +}