Merge pull request #2165 from tomekl007/BAEL-981_pact
BAEL-981 pact article code
This commit is contained in:
commit
d66d02ce4f
|
@ -350,6 +350,17 @@
|
||||||
<artifactId>java-lsh</artifactId>
|
<artifactId>java-lsh</artifactId>
|
||||||
<version>${java-lsh.version}</version>
|
<version>${java-lsh.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>au.com.dius</groupId>
|
||||||
|
<artifactId>pact-jvm-consumer-junit_2.11</artifactId>
|
||||||
|
<version>${pact.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.groovy</groupId>
|
||||||
|
<artifactId>groovy-all</artifactId>
|
||||||
|
<version>2.4.10</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<properties>
|
<properties>
|
||||||
<multiverse.version>0.7.0</multiverse.version>
|
<multiverse.version>0.7.0</multiverse.version>
|
||||||
|
@ -379,6 +390,7 @@
|
||||||
<commons.collections.version>4.1</commons.collections.version>
|
<commons.collections.version>4.1</commons.collections.version>
|
||||||
<junit.version>4.12</junit.version>
|
<junit.version>4.12</junit.version>
|
||||||
<java-lsh.version>0.10</java-lsh.version>
|
<java-lsh.version>0.10</java-lsh.version>
|
||||||
|
<pact.version>3.5.0</pact.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
package com.baeldung.pact;
|
||||||
|
|
||||||
|
|
||||||
|
import au.com.dius.pact.consumer.Pact;
|
||||||
|
import au.com.dius.pact.consumer.PactProviderRuleMk2;
|
||||||
|
import au.com.dius.pact.consumer.PactVerification;
|
||||||
|
import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
|
||||||
|
import au.com.dius.pact.model.RequestResponsePact;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.http.*;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
public class PactConsumerDrivenContractUnitTest {
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public PactProviderRuleMk2 mockProvider
|
||||||
|
= new PactProviderRuleMk2("test_provider", "localhost", 8080, this);
|
||||||
|
|
||||||
|
@Pact(consumer = "test_consumer")
|
||||||
|
public RequestResponsePact createPact(PactDslWithProvider builder) {
|
||||||
|
Map<String, String> headers = new HashMap<String, String>();
|
||||||
|
headers.put("Content-Type", "application/json");
|
||||||
|
|
||||||
|
return builder
|
||||||
|
.given("test GET ")
|
||||||
|
.uponReceiving("GET REQUEST")
|
||||||
|
.path("/")
|
||||||
|
.method("GET")
|
||||||
|
.willRespondWith()
|
||||||
|
.status(200)
|
||||||
|
.headers(headers)
|
||||||
|
.body("{\"condition\": true, \"name\": \"tom\"}")
|
||||||
|
.given("test POST")
|
||||||
|
.uponReceiving("POST REQUEST")
|
||||||
|
.method("POST")
|
||||||
|
.headers(headers)
|
||||||
|
.body("{\"name\": \"Michael\"}")
|
||||||
|
.path("/create")
|
||||||
|
.willRespondWith()
|
||||||
|
.status(201)
|
||||||
|
.headers(headers)
|
||||||
|
.body("")
|
||||||
|
.toPact();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@PactVerification()
|
||||||
|
public void givenGet_whenSendRequest_shouldReturn200WithProperHeaderAndBody() {
|
||||||
|
//when
|
||||||
|
ResponseEntity<String> response
|
||||||
|
= new RestTemplate().getForEntity(mockProvider.getUrl(), String.class);
|
||||||
|
|
||||||
|
//then
|
||||||
|
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||||
|
assertThat(response.getHeaders().get("Content-Type").contains("application/json")).isTrue();
|
||||||
|
assertThat(response.getBody()).contains("condition", "true", "name", "tom");
|
||||||
|
|
||||||
|
//and
|
||||||
|
HttpHeaders httpHeaders = new HttpHeaders();
|
||||||
|
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
|
||||||
|
String jsonBody = "{\"name\": \"Michael\"}";
|
||||||
|
|
||||||
|
//when
|
||||||
|
ResponseEntity<String> postResponse = new RestTemplate().exchange(
|
||||||
|
mockProvider.getUrl() + "/create",
|
||||||
|
HttpMethod.POST,
|
||||||
|
new HttpEntity<>(jsonBody, httpHeaders),
|
||||||
|
String.class
|
||||||
|
);
|
||||||
|
|
||||||
|
//then
|
||||||
|
assertThat(postResponse.getStatusCode().value()).isEqualTo(201);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue