{"id":22166304,"url":"https://github.com/alextanhongpin/node-pact","last_synced_at":"2026-05-01T01:32:08.127Z","repository":{"id":79115107,"uuid":"115500012","full_name":"alextanhongpin/node-pact","owner":"alextanhongpin","description":"Pact Testing with nodejs","archived":false,"fork":false,"pushed_at":"2017-12-28T09:10:50.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T16:21:12.633Z","etag":null,"topics":["node-pact","nodejs","pact","pact-broker","pact-testing"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alextanhongpin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-27T08:35:46.000Z","updated_at":"2017-12-28T08:52:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"8d264eca-de0b-43c9-ad4d-c0825719b63b","html_url":"https://github.com/alextanhongpin/node-pact","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alextanhongpin/node-pact","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextanhongpin%2Fnode-pact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextanhongpin%2Fnode-pact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextanhongpin%2Fnode-pact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextanhongpin%2Fnode-pact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alextanhongpin","download_url":"https://codeload.github.com/alextanhongpin/node-pact/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextanhongpin%2Fnode-pact/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32482460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["node-pact","nodejs","pact","pact-broker","pact-testing"],"created_at":"2024-12-02T05:18:58.758Z","updated_at":"2026-05-01T01:32:08.106Z","avatar_url":"https://github.com/alextanhongpin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# node-pact\n\nPact Testing with nodejs.\n\n\n## Generate pact contract\n\nRun consumer side tests and create pact:\n\n```bash\n$ ./node_modules/.bin/mocha client/client.spec.js\n```\n\nIt should generate `client/pacts/client-productservice.json`. Output:\n\n```json\n{\n  \"consumer\": {\n    \"name\": \"client\"\n  },\n  \"provider\": {\n    \"name\": \"ProductService\"\n  },\n  \"interactions\": [\n    {\n      \"description\": \"a request to retrieve product list\",\n      \"providerState\": \"it has one product\",\n      \"request\": {\n        \"method\": \"GET\",\n        \"path\": \"/products\"\n      },\n      \"response\": {\n        \"status\": 200,\n        \"headers\": {\n        },\n        \"body\": [\n          {\n            \"name\": \"Foo\"\n          }\n        ]\n      }\n    }\n  ],\n  \"metadata\": {\n    \"pactSpecification\": {\n      \"version\": \"2.0.0\"\n    }\n  }\n}\n```\n\n## Start Pact Broker\n\nThere is a dockerized version of the Pact Broker. See `docker-compose.yml`:\n\n```yml\nversion: '3'\n\nservices:\n  postgres:\n    image: postgres\n    healthcheck:\n      test: psql postgres --command 'select 1'\n    ports:\n      - 5432:5432\n    environment:\n      POSTGRES_USER: postgres\n      POSTGRES_PASSWORD: password\n      POSTGRES_DB: postgres\n    \n  broker_app:\n    image: dius/pact-broker\n    ports:\n    - 80:80\n    links:\n    - postgres\n    environment:\n      PACT_BROKER_DATABASE_USERNAME: postgres\n      PACT_BROKER_DATABASE_PASSWORD: password\n      PACT_BROKER_DATABASE_HOST: postgres\n      PACT_BROKER_DATABASE_NAME: postgres\n```\n\nStart the Pact Broker:\n\n```bash\n$ docker-compose up -d\n```\n\n## Publish Pact\n\nPublish all your contracts to the Pact Broker server with the following commands:\n\n```bash\n$ ./publish-pact.sh\n```\n\nThis requires `jq`. If you do not have `jq` installed:\n\n```\n$ brew install jq\n```\n\n## Verify pacts against the provider\n\n```bash\n# Start the server\n$ node server/consumer-test/test-products-service.js\n\n# Execute the test\n$ node server/consumer-test/verify-pacts.js\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falextanhongpin%2Fnode-pact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falextanhongpin%2Fnode-pact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falextanhongpin%2Fnode-pact/lists"}