1.3.0 • Published 8 years ago
cdc v1.3.0
Consumer Driven Contracts (CDC)
CDC provides a way to define mock provider for consumer and verify contracts against provider. It is written in JavaScript, however can be run in any setup using docker.
Getting started
Using docker-compose
version: '2'
services:
api:
build:
context: .
depends_on:
- dependency
command: npm start
dependency:
image: uldissturms/cdc
volumes:
- ./contracts/dependency:/usr/app/src/contracts
command: mock
ports:
- "3000:3000"Where ./contracts/dependency contains index.js that describes contract.
./contracts
└── dependency
└── index.jsUsing docker
docker run -p 3000:3000 -v ${PWD}/contracts:/usr/app/src/contracts uldissturms/cdc mock ./contracts/simpleUsing npm
npm i cdc
./node_modules/.bin/cdc mock ./contracts/simple
./node_modules/.bin/cdc verify ./contracts/simple --baseUrl http://localhost:3000Contracts
Simple contract with schema validation
const joi = require('joi')
module.exports = {
name: 'simple request/response schema',
request: {
path: '/api/simple-schema',
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: {
hello: 'world'
},
bodySchema: joi.object().keys({
hello: joi.string()
})
},
response: {
body: {
id: 12345
},
bodySchema: joi.object().keys({
id: joi.number().integer()
})
}
}Response
curl localhost:3000/api/simple-schema -H 'content-type: application/json' -d '{"hello": "world"}'{"id": 12345}Usage

| request | response | |
|---|---|---|
| consumer | verify schema | mock |
| provider | request | verify schema |
mock- mocks responses for consumerverify- verifies contracts agains provider
Options
- mock
- --port, -p - port for running mock server, defaults to 3000 (optional)
- --no-cors, -C - disable CORS support (optional)
- --watch, -w - to watch current directory for contract changes (optional)
- --tls, -t - enable TLS with a self signed certificate ( setting
NODE_TLS_REJECT_UNAUTHORIZED=0when consuming from node might be required )
- verify
- --baseUrl, -b - base url to run verifications against (required)
Examples
For more examples take a look at contracts in ./contracts used for tests.
Libraries used
- Joi (schema valiations)
- Hapi (mock provider server)
- Tape (verify consumer contracts against a provider)
Influences
Further reading
Licence
MIT
1.3.0
8 years ago
1.2.1
9 years ago
1.2.0
9 years ago
1.1.1
9 years ago
1.1.0
9 years ago
1.0.7
9 years ago
1.0.6
9 years ago
1.0.5
9 years ago
1.0.4
9 years ago
1.0.3
9 years ago
1.0.2
9 years ago
1.0.1
9 years ago
0.1.2
9 years ago
0.1.1
9 years ago
0.1.0
9 years ago
0.0.9
9 years ago
0.0.8
9 years ago
0.0.7
10 years ago
0.0.6
10 years ago
0.0.5
10 years ago
0.0.4
10 years ago
0.0.3
10 years ago
0.0.2
10 years ago
0.0.1
10 years ago
1.0.0
10 years ago