Package Exports
- @pact-foundation/pact-node
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@pact-foundation/pact-node) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Pact Node
An idiomatic Node interface for the Pact mock service (Consumer) and Verification (Provider) process.
Installation
npm install @pact-foundation/pact-node --save
Usage
Simply require the library and call the create function.
var pact = require('@pact-foundation/pact-node');
var server = pact.createServer({port: 9999});
server.start().then(function() {
// Do your testing/development here
});Documentation
Set Log Level
var pact = require('@pact-foundation/pact-node');
pact.logLevel('debug');Create Pact Mock Server
var pact = require('@pact-foundation/pact-node');
var server = pact.createServer({
port: <Number>, // Port number that the server runs on, defaults to 1234
host: <String>, // Host on which to bind the server on, defaults to 'localhost'
log: <String>, // File to log output on relative to current working directory, defaults to none
ssl: <Boolean>, // Create a self-signed SSL cert to run the server over HTTPS , defaults to 'false'
sslcert: <String>, // Path to a custom self-signed SSL cert file, 'ssl' option must be set to true to use this option. Defaults to none
sslkey: <String>, // Path a custom key and self-signed SSL cert key file, 'ssl' option must be set to true to use this option. Defaults to none
cors: <Boolean>, // Allow CORS OPTION requests to be accepted, defaults to 'false'
dir: <String>, // Directory to write the pact contracts relative to the current working directory, defaults to none
spec: <Number>, // The pact specification version to use when writing pact contracts, defaults to '1'
consumer: <String>, // The name of the consumer to be written to the pact contracts, defaults to none
provider: <String> // The name of the provider to be written to the pact contracts, defaults to none
});Run Provider Verification
Read more about Verify Pacts.
var pact = require('@pact-foundation/pact-node');
var opts = {
providerBaseUrl: <String>, // Running API provider host endpoint. Required.
pactBrokerUrl: <String> // URL of the Pact Broker to retrieve pacts from. Required if not using pactUrls.
provider: <String> // Name of the Provider. Required.
tags: <Array> // Array of tags, used to filter pacts from the Broker. Optional.
pactUrls: <Array>, // Array of local Pact file paths or HTTP-based URLs (e.g. from a broker). Required if not using a Broker.
providerStatesSetupUrl: <String>, // URL to send PUT requests to setup a given provider state. Optional.
pactBrokerUsername: <String>, // Username for Pact Broker basic authentication. Optional.
pactBrokerPassword: <String>, // Password for Pact Broker basic authentication. Optional
publishVerificationResult: <Boolean> // Publish verification result to Broker. Optional
providerVersion: <Boolean> // Provider version, required to publish verification result to Broker. Optional otherwise.
timeout: <Number> // The duration in ms we should wait to confirm verification process was successful. Defaults to 30000, Optional.
};
pact.verifyPacts(opts).then(function () {
// do something
});Publish Pacts to a Broker
var pact = require('@pact-foundation/pact-node');
var opts = {
pactUrls: <Array>, // Array of local Pact files or directories containing them. Required.
pactBroker: <String>, // URL to fetch the provider states for the given provider API. Optional.
pactBrokerUsername: <String>, // Username for Pact Broker basic authentication. Optional
pactBrokerPassword: <String>, // Password for Pact Broker basic authentication. Optional,
tags: <Array>, // An array of Strings to tag the Pacts being published. Optional
consumerVersion: <String> // A string containing a semver-style version e.g. 1.0.0. Required.
};
pact.publishPacts(opts)).then(function () {
// do something
});List Mock Servers
If you ever need to see which servers are currently created.
var pact = require('@pact-foundation/pact-node');
var servers = pact.listServers();
console.log(JSON.stringify(servers));Remove All Mock Servers
Remove all servers once you're done with them in one fell swoop.
var pact = require('@pact-foundation/pact-node');
pact.removeAllServers();Start a Mock Server server
Start the current server.
var pact = require('@pact-foundation/pact-node');
pact.createServer().start().then(function(){
// Do something after it started
});Stop a Mock server
Stop the current server.
var pact = require('@pact-foundation/pact-node');
pact.createServer().stop().then(function(){
// Do something after it stopped
});Delete a Mock server
Stop the current server and deletes it from the list.
var pact = require('@pact-foundation/pact-node');
pact.createServer().delete().then(function(){
// Do something after it was killed
});Check if a Mock server is running
var pact = require('@pact-foundation/pact-node');
pact.createServer().running;Mock Server Events
There's 3 different events available, 'start', 'stop' and 'delete'. They can be listened to the same way as an EventEmitter.
var pact = require('@pact-foundation/pact-node');
var server = pact.createServer();
server.on('start', function() { console.log('started'); });
server.on('stop', function() { console.log('stopped'); });
server.on('delete', function() { console.log('deleted'); });Contributing
To develop this project, simply install the dependencies and run npm run watch to for continual development, linting and testing when a source file changes.
Testing
Running npm test will execute the tests that has the *.spec.js pattern.