(DropwizardApp.class, "config.yml"); private static ProviderInfo serviceProvider; private static Pact testConsumerPact; @BeforeClass public static void setupProvider() { serviceProvider = new ProviderInfo("Dropwizard App"); serviceProvider.setProtocol("http"); serviceProvider.setHost("localhost"); serviceProvider.setPort(8080); serviceProvider.setPath("/"); ConsumerInfo consumer = new ConsumerInfo(); consumer.setName("test_consumer"); consumer.setPactFile(new File("target/pacts/ping_client-ping_service.json")); // serviceProvider.getConsumers().add(consumer); testConsumerPact = (Pact) new PactReader().loadPact(consumer.getPactFile()); } @Test @SuppressWarnings("unchecked") public void runConsumerPacts() { //grab the first interaction from the pact with consumer List interactions = scala.collection.JavaConversions.seqAsJavaList(testConsumerPact.interactions()); Interaction interaction1 = interactions.get(0); //setup any provider state //setup the client and interaction to fire against the provider ProviderClient client = new ProviderClient(); client.setProvider(serviceProvider); client.setRequest(interaction1.request()); Map clientResponse = (Map) client.makeRequest(); Map result = (Map) ResponseComparison.compareResponse(interaction1.response(), clientResponse, (int) clientResponse.get("statusCode"), (Map) clientResponse.get("headers"), (String) clientResponse.get("data")); //assert all good assertThat(result.get("method"), is(true)); // method type matches Map headers = (Map) result.get("headers"); //headers match headers.forEach( (k, v) -> assertThat(format("Header: [%s] does not match", k), v, org.hamcrest.Matchers.equalTo(true)) ); assertThat((Collection)((Map)result.get("body")).values(), org.hamcrest.Matchers.hasSize(0)); // empty list of body mismatches } } ``` ### An example of running provider verification with spock This example uses groovy and spock to run the provider verification. Again the provider service is a DropWizard application, and is using the DropwizardAppRule to startup the service. This example runs all interactions using spocks Unroll feature ```groovy class PactJVMProviderSpockSpec extends Specification { @ClassRule @Shared TestRule startServiceRule = new DropwizardAppRule(DropwizardApp.class, "config.yml"); @Shared ProviderInfo serviceProvider @Shared Pact testConsumerPact def setupSpec() { serviceProvider = new ProviderInfo("Dropwizard App") serviceProvider.protocol = "http" serviceProvider.host = "localhost" serviceProvider.port = 8080; serviceProvider.path = "/" def consumer = serviceProvider.hasPactWith("ping_consumer", { pactFile = new File('target/pacts/ping_client-ping_service.json') }) testConsumerPact = (Pact) new PactReader().loadPact(consumer.getPactFile()); } def cleanup() { //cleanup provider state //ie. db.truncateAllTables() } def cleanupSpec() { //cleanup provider } @Unroll def "Provider Pact - With Consumer"() { given: //setup provider state // ie. db.setupRecords() // serviceProvider.requestFilter = { req -> // req.addHeader('Authorization', token) // } when: ProviderClient client = new ProviderClient(provider: serviceProvider, request: interaction.request()) Map clientResponse = (Map) client.makeRequest() Map result = (Map) ResponseComparison.compareResponse(interaction.response(), clientResponse, clientResponse.statusCode, clientResponse.headers, clientResponse.data) then: // method matches result.method == true // headers all match, spock needs the size checked before // asserting each result if (result.headers.size() > 0) { result.headers.each() { k, v -> assert v == true } } // empty list of body mismatches result.body.size() == 0 where: interaction << scala.collection.JavaConversions.seqAsJavaList(testConsumerPact.interactions()) } } ``` ✓ Download JAR pact-jvm-provider_2.10 2.4.20 ✓ With dependencies ✓ Source of pact-jvm-provider_2.10 ☄ One click! ☄" />
All Downloads are FREE. Search and download functionalities are using the official Maven repository.

Download pact-jvm-provider_2.10 JAR 2.4.20 with all dependencies


Pact provider ============= sub project of https://github.com/DiUS/pact-jvm The pact provider is responsible for verifying that an API provider adheres to a number of pacts authored by its clients This library provides the basic tools required to automate the process, and should be usable on its own in many instances. Framework and build tool specific bindings will be provided in separate libraries that build on top of this core functionality. ### Running Pacts Main takes 2 arguments: The first is the root folder of your pact files (all .json files in root and subfolders are assumed to be pacts) The second is the location of your pact config json file. ### Pact config The pact config is a simple mapping of provider names to endpoint url's paths will be appended to endpoint url's when interactions are attempted for an example see: https://github.com/DiUS/pact-jvm/blob/master/pact-jvm-provider/src/test/resources/pact-config.json ### Provider State Before each interaction is executed, the provider under test will have the opportunity to enter a state. Generally the state maps to a set of fixture data for mocking out services that the provider is a consumer of (they will have their own pacts) The pact framework will instruct the test server to enter that state by sending: POST "${config.stateChangeUrl.url}/setup" { "state" : "${interaction.stateName}" } ### An example of running provider verification with junit This example uses java, junit and hamcrest matchers to run the provider verification. As the provider service is a DropWizard application, it uses the DropwizardAppRule to startup the service before running any test. Warning: It only grabs the first interaction from the pact file with the consumer, where there could be many. (This could possibly be solved with a parameterized test) ```java public class PactJVMProviderJUnitTest { @ClassRule public static TestRule startServiceRule = new DropwizardAppRule<DropwizardAppConfig>(DropwizardApp.class, "config.yml"); private static ProviderInfo serviceProvider; private static Pact testConsumerPact; @BeforeClass public static void setupProvider() { serviceProvider = new ProviderInfo("Dropwizard App"); serviceProvider.setProtocol("http"); serviceProvider.setHost("localhost"); serviceProvider.setPort(8080); serviceProvider.setPath("/"); ConsumerInfo consumer = new ConsumerInfo(); consumer.setName("test_consumer"); consumer.setPactFile(new File("target/pacts/ping_client-ping_service.json")); // serviceProvider.getConsumers().add(consumer); testConsumerPact = (Pact) new PactReader().loadPact(consumer.getPactFile()); } @Test @SuppressWarnings("unchecked") public void runConsumerPacts() { //grab the first interaction from the pact with consumer List<Interaction> interactions = scala.collection.JavaConversions.seqAsJavaList(testConsumerPact.interactions()); Interaction interaction1 = interactions.get(0); //setup any provider state //setup the client and interaction to fire against the provider ProviderClient client = new ProviderClient(); client.setProvider(serviceProvider); client.setRequest(interaction1.request()); Map<String, Object> clientResponse = (Map<String, Object>) client.makeRequest(); Map<String, Object> result = (Map<String, Object>) ResponseComparison.compareResponse(interaction1.response(), clientResponse, (int) clientResponse.get("statusCode"), (Map) clientResponse.get("headers"), (String) clientResponse.get("data")); //assert all good assertThat(result.get("method"), is(true)); // method type matches Map headers = (Map) result.get("headers"); //headers match headers.forEach( (k, v) -> assertThat(format("Header: [%s] does not match", k), v, org.hamcrest.Matchers.equalTo(true)) ); assertThat((Collection<Object>)((Map)result.get("body")).values(), org.hamcrest.Matchers.hasSize(0)); // empty list of body mismatches } } ``` ### An example of running provider verification with spock This example uses groovy and spock to run the provider verification. Again the provider service is a DropWizard application, and is using the DropwizardAppRule to startup the service. This example runs all interactions using spocks Unroll feature ```groovy class PactJVMProviderSpockSpec extends Specification { @ClassRule @Shared TestRule startServiceRule = new DropwizardAppRule<DropwizardAppConfig>(DropwizardApp.class, "config.yml"); @Shared ProviderInfo serviceProvider @Shared Pact testConsumerPact def setupSpec() { serviceProvider = new ProviderInfo("Dropwizard App") serviceProvider.protocol = "http" serviceProvider.host = "localhost" serviceProvider.port = 8080; serviceProvider.path = "/" def consumer = serviceProvider.hasPactWith("ping_consumer", { pactFile = new File('target/pacts/ping_client-ping_service.json') }) testConsumerPact = (Pact) new PactReader().loadPact(consumer.getPactFile()); } def cleanup() { //cleanup provider state //ie. db.truncateAllTables() } def cleanupSpec() { //cleanup provider } @Unroll def "Provider Pact - With Consumer"() { given: //setup provider state // ie. db.setupRecords() // serviceProvider.requestFilter = { req -> // req.addHeader('Authorization', token) // } when: ProviderClient client = new ProviderClient(provider: serviceProvider, request: interaction.request()) Map clientResponse = (Map) client.makeRequest() Map result = (Map) ResponseComparison.compareResponse(interaction.response(), clientResponse, clientResponse.statusCode, clientResponse.headers, clientResponse.data) then: // method matches result.method == true // headers all match, spock needs the size checked before // asserting each result if (result.headers.size() > 0) { result.headers.each() { k, v -> assert v == true } } // empty list of body mismatches result.body.size() == 0 where: interaction << scala.collection.JavaConversions.seqAsJavaList(testConsumerPact.interactions()) } } ```

Files of the artifact pact-jvm-provider_2.10 version 2.4.20 from the group au.com.dius.

Test

Artifact pact-jvm-provider_2.10
Group au.com.dius
Version 2.4.20
Last update 14. April 2018
Tags: cleanup requestfilter using assertthat matches dropwizard feature setpath quot host static setport possibly under number header interaction1 grabs dropwizardappconfig project each automate assumed parameterized before simple serviceprovider data collection instances running attempted executed setupspec token could https needs javaconversions fire arguments string library assert runs public checked hassize beforeclass libraries body resources client dropwizardapprule root tool good consumer localhost setname takes values basic shared haspactwith size that hamcrest names against pactjvmproviderjunittest example getpactfile does ping_service result grab testrule bindings matchers testconsumerpact makerequest responsecomparison mocking response startservicerule json setupprovider generally interactions functionality separate protocol provides 8080 provider setuprecords junit main statechangeurl there service clientresponse provided server core java github pacts statuscode unroll they test seqasjavalist given file ping_client empty config only services groovy pactjvmproviderspockspec again interaction pactfile asserting spock startup cleanupspec endpoint many verification http then will providerinfo port ping_consumer mapping truncatealltables build private runconsumerpacts dropwizardapp files post responsible loadpact void true sethost should framework master process folder sending getconsumers consumerinfo statename setprovider compareresponse method warning headers appended second location authorization where type setrequest tools providerclient authored instruct apos when request required test_consumer unchecked extends solved pactreader classrule class enter format setpactfile pact usable match this addheader setprotocol foreach adheres fixture verifying specific have state object from scala paths setup suppresswarnings path application subfolders with your list spocks blob opportunity maps target specification equalto uses their mismatches first dius clients
Organization not specified
URL https://github.com/DiUS/pact-jvm
License Apache 2
Dependencies amount 13
Dependencies scala-library, diffutils, httpclient, commons-io, pact-jvm-matchers_2.10, scala-compiler, scalatest_2.10, groovy-all, jansi, reflections, http-builder, slf4j-api, pact-jvm-model_2.10,
There are maybe transitive dependencies!
The newest version!
Show more of this group  Show more artifacts with this name
Show all versions of pact-jvm-provider_2.10 Show documentation

Please rate this JAR file. Is it a good library?

2 downloads

Source code of pact-jvm-provider_2.10 version 2.4.20

META-INF
META-INF.META-INF.MANIFEST.MF
au.com.dius.pact.provider
au.com.dius.pact.provider.au.com.dius.pact.provider.CollectionUtils.scala
au.com.dius.pact.provider.au.com.dius.pact.provider.ConsumerInfo.groovy
au.com.dius.pact.provider.au.com.dius.pact.provider.ConsumersGroup.groovy
au.com.dius.pact.provider.au.com.dius.pact.provider.EnterStateRequest.scala
au.com.dius.pact.provider.au.com.dius.pact.provider.HttpClientFactory.groovy
au.com.dius.pact.provider.au.com.dius.pact.provider.PactFileSource.scala
au.com.dius.pact.provider.au.com.dius.pact.provider.PactVerification
au.com.dius.pact.provider.au.com.dius.pact.provider.PactVerifierException
au.com.dius.pact.provider.au.com.dius.pact.provider.PactVerifyProvider
au.com.dius.pact.provider.au.com.dius.pact.provider.ProviderClient.groovy
au.com.dius.pact.provider.au.com.dius.pact.provider.ProviderInfo.groovy
au.com.dius.pact.provider.au.com.dius.pact.provider.ProviderUtils.groovy
au.com.dius.pact.provider.au.com.dius.pact.provider.ProviderVerifier.groovy
au.com.dius.pact.provider.au.com.dius.pact.provider.ResponseComparison.groovy
au.com.dius.pact.provider.au.com.dius.pact.provider.ServiceInvokeRequest.scala
au.com.dius.pact.provider.broker
au.com.dius.pact.provider.broker.au.com.dius.pact.provider.broker.HalClient.groovy
au.com.dius.pact.provider.broker.au.com.dius.pact.provider.broker.InvalidHalResponse.groovy
au.com.dius.pact.provider.broker.au.com.dius.pact.provider.broker.InvalidNavigationRequest.groovy
au.com.dius.pact.provider.broker.au.com.dius.pact.provider.broker.NotFoundHalResponse.groovy
au.com.dius.pact.provider.broker.au.com.dius.pact.provider.broker.PactBrokerClient.groovy
au.com.dius.pact.provider.org.fusesource.jansi
au.com.dius.pact.provider.org.fusesource.jansi.au.com.dius.pact.provider.org.fusesource.jansi.Ansi
au.com.dius.pact.provider.org.fusesource.jansi.au.com.dius.pact.provider.org.fusesource.jansi.AnsiConsole
au.com.dius.pact.provider.org.fusesource.jansi.au.com.dius.pact.provider.org.fusesource.jansi.AnsiOutputStream
au.com.dius.pact.provider.org.fusesource.jansi.au.com.dius.pact.provider.org.fusesource.jansi.AnsiRenderWriter
au.com.dius.pact.provider.org.fusesource.jansi.au.com.dius.pact.provider.org.fusesource.jansi.AnsiRenderer
au.com.dius.pact.provider.org.fusesource.jansi.au.com.dius.pact.provider.org.fusesource.jansi.AnsiString
au.com.dius.pact.provider.org.fusesource.jansi.au.com.dius.pact.provider.org.fusesource.jansi.HtmlAnsiOutputStream
au.com.dius.pact.provider.org.fusesource.jansi.au.com.dius.pact.provider.org.fusesource.jansi.WindowsAnsiOutputStream
au.com.dius.pact.provider.reporters
au.com.dius.pact.provider.reporters.au.com.dius.pact.provider.reporters.AnsiConsoleReporter.groovy
au.com.dius.pact.provider.reporters.au.com.dius.pact.provider.reporters.JsonReporter.groovy
au.com.dius.pact.provider.reporters.au.com.dius.pact.provider.reporters.MarkdownReporter.groovy
au.com.dius.pact.provider.reporters.au.com.dius.pact.provider.reporters.ReporterManager.groovy
au.com.dius.pact.provider.reporters.au.com.dius.pact.provider.reporters.VerifierReporter.groovy
au.com.dius.pact.provider.sbtsupport
au.com.dius.pact.provider.sbtsupport.au.com.dius.pact.provider.sbtsupport.Address.groovy
au.com.dius.pact.provider.sbtsupport.au.com.dius.pact.provider.sbtsupport.HttpClient.scala
au.com.dius.pact.provider.sbtsupport.au.com.dius.pact.provider.sbtsupport.InvalidPactConfigurationException.groovy
au.com.dius.pact.provider.sbtsupport.au.com.dius.pact.provider.sbtsupport.Main.scala
au.com.dius.pact.provider.sbtsupport.au.com.dius.pact.provider.sbtsupport.PactConfiguration.groovy
au.com.dius.pact.provider.sbtsupport.au.com.dius.pact.provider.sbtsupport.PactSpec.scala
au.com.dius.pact.provider.unfiltered
au.com.dius.pact.provider.unfiltered.au.com.dius.pact.provider.unfiltered.Conversions.scala