Development Tools

pact-jvm-provider-lein_2.11

au.com.dius : pact-jvm-provider-lein_2.11

# Leiningen plugin to verify a provider [version 2.2.14+, 3.0.3+] Leiningen plugin for verifying pacts against a provider. The plugin provides a `pact-verify` task which will verify all configured pacts against your provider. ## To Use It ### 1. Add the plugin to your project plugins, preferably in it's own profile. ```clojure :profiles { :pact { :plugins [[au.com.dius/pact-jvm-provider-lein_2.11 "3.2.11" :exclusions [commons-logging]]] :dependencies [[ch.qos.logback/logback-core "1.1.3"] [ch.qos.logback/logback-classic "1.1.3"] [org.apache.httpcomponents/httpclient "4.4.1"]] }}} ``` ### 2. Define the pacts between your consumers and providers You define all the providers and consumers within the `:pact` configuration element of your project. ```clojure :pact { :service-providers { ; You can define as many as you need, but each must have a unique name :provider1 { ; All the provider properties are optional, and have sensible defaults (shown below) :protocol "http" :host "localhost" :port 8080 :path "/" :has-pact-with { ; Again, you can define as many consumers for each provider as you need, but each must have a unique name :consumer1 { ; pact file can be either a path or an URL :pact-file "path/to/provider1-consumer1-pact.json" } } } } } ``` ### 3. Execute `lein with-profile pact pact-verify` You will have to have your provider running for this to pass. ## Enabling insecure SSL For providers that are running on SSL with self-signed certificates, you need to enable insecure SSL mode by setting `:insecure true` on the provider. ```clojure :pact { :service-providers { :provider1 { :protocol "https" :host "localhost" :port 8443 :insecure true :has-pact-with { :consumer1 { :pact-file "path/to/provider1-consumer1-pact.json" } } } } } ``` ## Specifying a custom trust store For environments that are running their own certificate chains: ```clojure :pact { :service-providers { :provider1 { :protocol "https" :host "localhost" :port 8443 :trust-store "relative/path/to/trustStore.jks" :trust-store-password "changeme" :has-pact-with { :consumer1 { :pact-file "path/to/provider1-consumer1-pact.json" } } } } } ``` `:trust-store` is relative to the current working (build) directory. `:trust-store-password` defaults to `changeit`. NOTE: The hostname will still be verified against the certificate. ## Modifying the requests before they are sent Sometimes you may need to add things to the requests that can't be persisted in a pact file. Examples of these would be authentication tokens, which have a small life span. The Leiningen plugin provides a request filter that can be set to an anonymous function on the provider that will be called before the request is made. This function will receive the HttpRequest object as a parameter. ```clojure :pact { :service-providers { :provider1 { ; function that adds an Authorization header to each request :request-filter #(.addHeader % "Authorization" "oauth-token eyJhbGciOiJSUzI1NiIsIm...") :has-pact-with { :consumer1 { :pact-file "path/to/provider1-consumer1-pact.json" } } } } } ``` __*Important Note:*__ You should only use this feature for things that can not be persisted in the pact file. By modifying the request, you are potentially modifying the contract from the consumer tests! ## Modifying the HTTP Client Used The default HTTP client is used for all requests to providers (created with a call to `HttpClients.createDefault()`). This can be changed by specifying a function assigned to `:create-client` on the provider that returns a `CloseableHttpClient`. The function will receive the provider info as a parameter. ## Turning off URL decoding of the paths in the pact file [version 3.3.3+] By default the paths loaded from the pact file will be decoded before the request is sent to the provider. To turn this behaviour off, set the system property `pact.verifier.disableUrlPathDecoding` to `true`. __*Important Note:*__ If you turn off the url path decoding, you need to ensure that the paths in the pact files are correctly encoded. The verifier will not be able to make a request with an invalid encoded path. ## Plugin Properties The following plugin options can be specified on the command line: |Property|Description| |--------|-----------| |:pact.showStacktrace|This turns on stacktrace printing for each request. It can help with diagnosing network errors| |:pact.showFullDiff|This turns on displaying the full diff of the expected versus actual bodies [version 3.3.6+]| |:pact.filter.consumers|Comma seperated list of consumer names to verify| |:pact.filter.description|Only verify interactions whose description match the provided regular expression| |:pact.filter.providerState|Only verify interactions whose provider state match the provided regular expression. An empty string matches interactions that have no state| |:pact.verifier.publishResults|Publishing of verification results will be skipped unless this property is set to 'true' [version 3.5.18+]| |:pact.matching.wildcard|Enables matching of map values ignoring the keys when this property is set to 'true'| Example, to run verification only for a particular consumer: ``` $ lein with-profile pact pact-verify :pact.filter.consumers=consumer2 ``` ## Provider States For each provider you can specify a state change URL to use to switch the state of the provider. This URL will receive the `providerState` description from the pact file before each interaction via a POST. The `:state-change-uses-body` controls if the state is passed in the request body or as a query parameter. These values can be set at the provider level, or for a specific consumer. Consumer values take precedent if both are given. ```clojure :pact { :service-providers { :provider1 { :state-change-url "http://localhost:8080/tasks/pactStateChange" :state-change-uses-body false ; defaults to true :has-pact-with { :consumer1 { :pact-file "path/to/provider1-consumer1-pact.json" } } } } } ``` If the `:state-change-uses-body` is not specified, or is set to true, then the provider state description will be sent as JSON in the body of the request. If it is set to false, it will passed as a query parameter. As for normal requests (see Modifying the requests before they are sent), a state change request can be modified before it is sent. Set `:state-change-request-filter` to an anonymous function on the provider that will be called before the request is made. ## Filtering the interactions that are verified You can filter the interactions that are run using three properties: `:pact.filter.consumers`, `:pact.filter.description` and `:pact.filter.providerState`. Adding `:pact.filter.consumers=consumer1,consumer2` to the command line will only run the pact files for those consumers (consumer1 and consumer2). Adding `:pact.filter.description=a request for payment.*` will only run those interactions whose descriptions start with 'a request for payment'. `:pact.filter.providerState=.*payment` will match any interaction that has a provider state that ends with payment, and `:pact.filter.providerState=` will match any interaction that does not have a provider state. ## Starting and shutting down your provider For the pact verification to run, the provider needs to be running. Leiningen provides a `do` task that can chain tasks together. So, by creating a `start-app` and `terminate-app` alias, you could so something like: $ lein with-profile pact do start-app, pact-verify, terminate-app However, if the pact verification fails the build will abort without running the `terminate-app` task. To have the start and terminate tasks always run regardless of the state of the verification, you can assign them to `:start-provider-task` and `:terminate-provider-task` on the provider. ```clojure :aliases {"start-app" ^{:doc "Starts the app"} ["tasks to start app ..."] ; insert tasks to start the app here "terminate-app" ^{:doc "Kills the app"} ["tasks to terminate app ..."] ; insert tasks to stop the app here } :pact { :service-providers { :provider1 { :start-provider-task "start-app" :terminate-provider-task "terminate-app" :has-pact-with { :consumer1 { :pact-file "path/to/provider1-consumer1-pact.json" } } } } } ``` Then you can just run: $ lein with-profile pact pact-verify and the `start-app` and `terminate-app` tasks will run before and after the provider verification. ## Specifying the provider hostname at runtime [3.0.4+] If you need to calculate the provider hostname at runtime (for instance it is run as a new docker container or AWS instance), you can give an anonymous function as the provider host that returns the host name. The function will receive the provider information as a parameter. ```clojure :pact { :service-providers { :provider1 { :host #(calculate-host-name %) :has-pact-with { :consumer1 { :pact-file "path/to/provider1-consumer1-pact.json" } } } } } ```

Last Version: 3.5.24

Release Date:

Cloudinary Android Glide Integration Library

com.cloudinary : cloudinary-android-glide-integration

Cloudinary is a cloud service that offers a solution to a web application's entire image management pipeline. Upload images to the cloud. Automatically perform smart image resizing, cropping and conversion without installing any complex software. Integrate Facebook or Twitter profile image extraction in a snap, in any dimension and style to match your website’s graphics requirements. Images are seamlessly delivered through a fast CDN, and much much more. This Java library allows to easily integrate with Cloudinary in Java applications.

Last Version: 2.2.0

Release Date:

libapi

org.identifiers.cloud : libapi

This library provides client side service wrappers to access identifiers.org Cloud based API

Last Version: 2.3.0

Release Date:

Last Version: 0.9.237

Release Date:

Last Version: 1.0.1

Release Date:

sakai-openldap-provider

org.sakaiproject : sakai-openldap-provider

Corporate POM for the Sakai Open Source Collaborative Learning Environment/Learning Management System

Last Version: 22.0

Release Date:

WSO2 Carbon - Template Manager

org.wso2.carbon.identity.framework : template-mgt

This is a Carbon bundle that represent the Template Management Module.

Last Version: 5.20.324

Release Date:

Last Version: 3.0.2

Release Date:

Identity4J Active Directory JNDI

com.nervepoint : identity4j-active-directory-jndi

A suite of Java Identity and Authentication Connectors.

Last Version: 1.2.2

Release Date:

jclouds StratoGen vCloud MyCloud provider

org.jclouds.provider : stratogen-vcloud-mycloud

vCloud implementation targeted to StratoGen vCloud MyCloud

Last Version: 1.6.0-rc.5

Release Date:

Last Version: 1.0.0

Release Date:

Last Version: 0.0.3

Release Date:

Vaadin-SpringSecurityViewProvider

de.enerko : vaadin-springsecurityviewprovider

Provides a custom ViewProvider which evaluates @ViewDescription's and instanciates Views accordingly if the current User, authenticated through Spring Security, has the necessary permissions to use them.

Last Version: 0.2.1

Release Date:

Last Version: 1.19.4

Release Date:

com.hashicorp:cdktf-provider-digitalocean

com.hashicorp : cdktf-provider-digitalocean

Prebuilt digitalocean Provider for Terraform CDK (cdktf)

Last Version: 0.1.37

Release Date:

atmosphere-videochat

org.atmosphere.samples : atmosphere-videochat

VideoChat with Atmosphere handler and webrtc

Last Version: 2.6.4

Release Date:

google-provider

com.colisweb : scala-distances-provider-google_2.13

Scala Distances is a Scala wrapper around the Google distance library

Last Version: 7.4.0

Release Date:

Sunbot HTTP

com.harium.suneidesis.sunbot : http

A plugin to turn your Suneidesis Chatbot into a HTTP Server

Last Version: 1.5.3

Release Date:

Last Version: 10.5.0_akka25Circe08

Release Date:

Ant Fin Tech API SDK

cn.com.antcloud.api : antcloud-api-provider-assetchain

Ant Fin Tech API SDK For Java Copyright (c) 2015-present Alipay.com, https://www.alipay.com

Last Version: 1.0.6

Release Date:

morpheus-tab-plugin

com.morpheusdata : morpheus-test-provider

Morpheus Core provides the core framework for implementing extension plugins for the morpheus platform

Last Version: 1.0.4

Release Date:

Ant Chain API SDK

cn.com.antcloud.api : antcloud-api-provider-tdm

Ant Chain API SDK For Java Copyright (c) 2020-present antgroup.com, https://www.antgroup.com

Last Version: 1.1.8

Release Date:

Last Version: 1.0.0

Release Date:

Gluon Attach (video)

com.gluonhq.attach : video

API for accessing video features

Last Version: 4.0.14

Release Date:

sideex webservice client api java

com.github.SideeX : sideex-webservice-client-api-java

This api has been deprecated, please use the updated api "sideex webservice client" https://search.maven.org/artifact/com.github.SideeX/sideex-webservice-client

Last Version: 1.0.1-1

Release Date:

Arquillian Algeron Provider Pact ftest container skip deployment

org.arquillian.algeron : arquillian-algeron-pact-provider-ftest-container-skip-deployment

Arquillian Algeron Extension to run consumer-driven contracts with Pact and explore other approaches

Last Version: 2.0.0-rc.4

Release Date:

camunda-rest-client-spring-boot-example-provided

org.camunda.bpm.extension.rest : camunda-rest-client-spring-boot-example-provided

This example demonstrates how communication with local and remote engine in the same application may look like.

Last Version: 0.0.6

Release Date:

Last Version: 1.010

Release Date:

Last Version: 0.2.0

Release Date:

Gravitee IO - Access Management - Identity Provider

io.gravitee.am.identityprovider : gravitee-am-identityprovider

The Gravitee.IO Parent POM provides common settings for all Gravitee components.

Last Version: 3.18.0-RC2

Release Date:

Last Version: 0.8.1

Release Date:

Apache BookKeeper :: Stats Providers

org.apache.bookkeeper : bookkeeper-stats-providers

The Apache Software Foundation provides support for the Apache community of open-source software projects. The Apache projects are characterized by a collaborative, consensus based development process, an open and pragmatic software license, and a desire to create high quality software that leads the way in its field. We consider ourselves not simply a group of projects sharing a server, but rather a community of developers and users.

Last Version: 4.15.0

Release Date:

com.hashicorp:cdktf-provider-null

com.hashicorp : cdktf-provider-null

Prebuilt null Provider for Terraform CDK (cdktf)

Last Version: 0.7.27

Release Date:

quarkus-zoe-ide-parent

io.github.jocelynmutso : quarkus-zoe-ide-parent

Zoe CMS system for Markdown-based content

Last Version: 1.010

Release Date:

Glide Concurrent Integration

com.github.bumptech.glide : concurrent-integration

An integration library for using Glide with ListenableFutures

Last Version: 4.13.2

Release Date:

jpatesting-providers

org.hglteam.testing : jpatesting-providers

Small set of classes to setup JPA on tests

Last Version: 1.0.2

Release Date:

Pappus Graph Projection

com.github.jkschneider : pappus-graph-projection

Pappus projects any Java object model onto a Tinkerpop compatible graph.

Last Version: 0.1.3

Release Date:

WSO2 Carbon - Identity Consent Aggregator Module

org.wso2.carbon.identity.framework : identity-consent-mgt-aggregator

WSO2 is an open source application development software company focused on providing service-oriented architecture solutions for professional developers.

Last Version: 5.20.324

Release Date:

Last Version: 2022.05.30

Release Date:

idempotence4j

com.transferwise.idempotence4j : idempotence4j-benchmarks

Lightweight library for handling idempotent actions

Last Version: 1.7.1

Release Date: