pavan kumar s
10/30/2023, 11:54 AMpavan kumar s
10/30/2023, 11:57 AMBas Dijkstra
10/30/2023, 4:21 PMpavan kumar s
10/30/2023, 4:25 PMBas Dijkstra
10/30/2023, 4:41 PMpavan kumar s
10/30/2023, 5:44 PMBas Dijkstra
10/30/2023, 6:27 PMFrancislainy Campos
10/31/2023, 7:24 AMFrancislainy Campos
10/31/2023, 7:26 AMFrancislainy Campos
10/31/2023, 7:26 AM@Provider(PACT_PROVIDER)
/* Uncomment this and comment @PactBroker instead to test locally by pasting a .json file for the contract under
the target/pacts folder */
@PactFolder("target/pacts")
// @PactBroker(host = BROKER_PACT_URL, consumers = {"MY_CONSUMER"})
@VerificationReports(value = {"markdown"}, reportDir = "target/pacts")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Sql(scripts = {"classpath:clean-up.sql", "classpath:init.sql"}, executionPhase = BEFORE_TEST_METHOD)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class ProviderIT extends BasePostgresConfig {
@LocalServerPort
int port;
RequestSpecification rq;
@BeforeAll
void setUp() {
Map<String, String> headers = new HashMap<>();
rq = getRequestSpecification().baseUri("<http://localhost>:" + port)
.contentType(ContentType.JSON)
.headers(headers);
}
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactTestTemplate(PactVerificationContext context, HttpRequest request) {
logCurlFromPact(context, request, "<http://localhost>:" + port);
context.verifyInteraction();
}
@BeforeEach
void before(PactVerificationContext context) {
context.setTarget(new HttpTestTarget("localhost", port, ""));
}
@State("A request to retrieve a product")
Map<String, Object> getProduct() {
Map<String, Object> map = new HashMap<>();
map.put("productId", "d3256c76-62d7-4481-9d1c-a0ccc4da380f");
return map;
}
}Francislainy Campos
10/31/2023, 7:27 AMFrancislainy Campos
10/31/2023, 7:29 AMFrancislainy Campos
10/31/2023, 7:32 AMFrancislainy Campos
10/31/2023, 7:33 AMFrancislainy Campos
10/31/2023, 7:33 AMFrancislainy Campos
10/31/2023, 7:34 AMFrancislainy Campos
10/31/2023, 7:34 AMpublic static void logCurlFromPact(PactVerificationContext context, HttpRequest request, String baseUri) {
String bodyParam = ((RequestResponseInteraction) context.getInteraction()).getRequest().getBody().valueAsString();
String bodyResponse = ((RequestResponseInteraction) context.getInteraction()).getResponse().getBody().valueAsString();
String method = ((RequestResponseInteraction) context.getInteraction()).getRequest().getMethod();
String url = baseUri + request.getPath();
Header[] headers = request.getHeaders();
String headersString = "";
for (Header s : headers) {
headersString = headersString + "--header " + "'" + s.getName() + ": " + s.getValue() + "'" + "\\" + "\n";
}
String curl = """
curl --request %s '%s' \
%s --data-binary '%s' \
--compressed --insecure --verbose
""".formatted(method, url, headersString, bodyParam);
log.debug(curl + "\n\n " + bodyResponse + "\n ---- \n\n");
}Francislainy Campos
10/31/2023, 7:35 AMFrancislainy Campos
10/31/2023, 7:35 AMFrancislainy Campos
10/31/2023, 7:41 AMBas Dijkstra
10/31/2023, 7:49 AMpavan kumar s
10/31/2023, 2:14 PM