Example Consumer

Source Code

https://github.com/pactflow/example-consumer

badge__3_.svg

pact_not_found-unknown-lightgrey.svg: https://test.pactflow.io/pacts/provider/pactflow-example-provider/consumer/pactflow-example-consumer/latest (latest pact)

PF_Screenshot_CanIDeployBadge.svghttps://test.pactflow.io/pacticipants/pactflow-example-consumer/branches/master/latest-version/can-i-deploy/to-environment/production/badge

This is an example of a Node consumer using Pact to create a consumer driven contract and sharing it via API Hub for Contract Testing.

It is using a public tenant on API Hub for Contract Testing, which you can access here using the credentials dXfltyFMgNOFZAxr8io9wJ37iUpY42M/O5AIZWxelWbLvqMd8PkAVycBJh2Psyg1. The latest version of the Example Consumer/Example Provider pact is published here.

The project uses a Makefile to simulate a very simple build pipeline with two stages - test and deploy.

  • Test

    • Run tests (including the pact tests that generate the contract)

    • Publish pacts, associating the consumer version with the name of the current branch

    • Check if we are safe to deploy to prod (ie. has the pact content been successfully verified)

  • Deploy (only from master)

    • Deploy app (just pretend for the purposes of this example!)

    • Record the deployment in the Pact Broker

Usage

See the API Hub for Contract Testing CI/CD Workshop for further details.

Running the application

Start up the provider (or another compatible provider) API by running npm run start.

Open a separate terminal for the consumer.

Before starting the consumer, create a .env file in the root of the project and set the URL to point to your running provider:

REACT_APP_API_BASE_URL=http://localhost:8080

Then run:

npm run start

Pre-requisites

Software:

Environment variables

To be able to run some of the commands locally, you will need to export the following environment variables into your shell:

  • PACT_BROKER_TOKEN: a valid API Token for API Hub for Contract Testing

  • PACT_BROKER_BASE_URL: a fully qualified domain name with protocol to your pact broker e.g., https://testdemo.pactflow.io

Usage

Pact use case

  • make test - run the pact test locally

  • make fake_ci - run the CI process locally

Publication date: