Code Monkey home page Code Monkey logo

pact-workshop-js's People

Contributors

bengglim avatar bethesque avatar dependabot[bot] avatar edouard-lopez avatar mefellows avatar shilgam avatar timothyjones avatar uglyog avatar williaminfante avatar you54f avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pact-workshop-js's Issues

Mismatch between instructions and sample code

The instructions say the Pact file should be copied from consumer/pacts to provider/pacts...
BUT
product.pact.test.js looks for the Pact file in consumer/pacts.

I'm happy to fix, but which was intended?

(Personally I favour copying the Pact file & modifying product.pact.test.js to look in provider/pacts)

Pact broker docker compose fail to start

Using 92a5b93, I wasn't able to start a broker after git checkout step11

❯ docker compose up
[+] Running 3/3
 ⠿ Network pact-workshop-js_default         Created                                                                                                                                                           0.0s
 ⠿ Container pact-workshop-js-postgres-1    Created                                                                                                                                                           0.0s
 ⠿ Container pact-workshop-js-broker_app-1  Created                                                                                                                                                           0.0s
Attaching to pact-workshop-js-broker_app-1, pact-workshop-js-postgres-1
pact-workshop-js-postgres-1    | The files belonging to this database system will be owned by user "postgres".
pact-workshop-js-postgres-1    | This user must also own the server process.
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | The database cluster will be initialized with locale "en_US.utf8".
pact-workshop-js-postgres-1    | The default database encoding has accordingly been set to "UTF8".
pact-workshop-js-postgres-1    | The default text search configuration will be set to "english".
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | Data page checksums are disabled.
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | fixing permissions on existing directory /var/lib/postgresql/data ... ok
pact-workshop-js-postgres-1    | creating subdirectories ... ok
pact-workshop-js-postgres-1    | selecting dynamic shared memory implementation ... posix
pact-workshop-js-postgres-1    | selecting default max_connections ... 100
pact-workshop-js-postgres-1    | selecting default shared_buffers ... 128MB
pact-workshop-js-postgres-1    | selecting default time zone ... Etc/UTC
pact-workshop-js-postgres-1    | creating configuration files ... ok
pact-workshop-js-postgres-1    | running bootstrap script ... ok
pact-workshop-js-broker_app-1  | Puma starting in single mode...
pact-workshop-js-broker_app-1  | * Puma version: 5.5.2 (ruby 2.6.8-p205) ("Zawgyi")
pact-workshop-js-broker_app-1  | *  Min threads: 0
pact-workshop-js-broker_app-1  | *  Max threads: 5
pact-workshop-js-broker_app-1  | *  Environment: production
pact-workshop-js-broker_app-1  | *          PID: 8
pact-workshop-js-postgres-1    | performing post-bootstrap initialization ... ok
pact-workshop-js-postgres-1    | syncing data to disk ... ok
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | Success. You can now start the database server using:
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    |     pg_ctl -D /var/lib/postgresql/data -l logfile start
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | initdb: warning: enabling "trust" authentication for local connections
pact-workshop-js-postgres-1    | You can change this by editing pg_hba.conf or using the option -A, or
pact-workshop-js-postgres-1    | --auth-local and --auth-host, the next time you run initdb.
pact-workshop-js-postgres-1    | waiting for server to start....2021-12-02 21:20:54.230 UTC [47] LOG:  starting PostgreSQL 13.4 (Debian 13.4-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.231 UTC [47] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.234 UTC [48] LOG:  database system was shut down at 2021-12-02 21:20:54 UTC
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.237 UTC [47] LOG:  database system is ready to accept connections
pact-workshop-js-postgres-1    |  done
pact-workshop-js-postgres-1    | server started
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.355 UTC [47] LOG:  received fast shutdown request
pact-workshop-js-postgres-1    | waiting for server to shut down....2021-12-02 21:20:54.356 UTC [47] LOG:  aborting any active transactions
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.357 UTC [47] LOG:  background worker "logical replication launcher" (PID 54) exited with exit code 1
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.357 UTC [49] LOG:  shutting down
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.365 UTC [47] LOG:  database system is shut down
pact-workshop-js-broker_app-1  | 2021-12-02 21:20:54.340654 I [8:70132409424380] pact-broker -- Connecting to database: -- "{:adapter=>\"postgres\", :user=>\"postgres\", :password=>\"*****\", :host=>\"postgres\", :database=>\"postgres\", :encoding=>\"utf8\", :sql_log_level=>:debug, :enable_caller_logging=>false, :log_warn_duration=>5.0, :pool_timeout=>5, :driver_options=>{:options=>\"-c statement_timeout=15s\"}, :connect_max_retries=>0}"
pact-workshop-js-broker_app-1  | ! Unable to load application: Sequel::DatabaseConnectionError: PG::ConnectionBad: could not connect to server: Connection refused
pact-workshop-js-broker_app-1  | 	Is the server running on host "postgres" (172.22.0.2) and accepting
pact-workshop-js-broker_app-1  | 	TCP/IP connections on port 5432?
pact-workshop-js-broker_app-1  | bundler: failed to load command: puma (/pact_broker/vendor/bundle/ruby/2.6.0/bin/puma)
pact-workshop-js-postgres-1    |  done
pact-workshop-js-postgres-1    | server stopped
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | PostgreSQL init process complete; ready for start up.
pact-workshop-js-postgres-1    | 
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.498 UTC [1] LOG:  starting PostgreSQL 13.4 (Debian 13.4-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.498 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.498 UTC [1] LOG:  listening on IPv6 address "::", port 5432
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.500 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.503 UTC [66] LOG:  database system was shut down at 2021-12-02 21:20:54 UTC
pact-workshop-js-postgres-1    | 2021-12-02 21:20:54.507 UTC [1] LOG:  database system is ready to accept connections
pact-workshop-js-broker_app-1  | /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/adapters/postgres.rb:210:in `initialize': PG::ConnectionBad: could not connect to server: Connection refused (Sequel::DatabaseConnectionError)
pact-workshop-js-broker_app-1  | 	Is the server running on host "postgres" (172.22.0.2) and accepting
pact-workshop-js-broker_app-1  | 	TCP/IP connections on port 5432?
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/adapters/postgres.rb:210:in `new'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/adapters/postgres.rb:210:in `connect'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/connection_pool.rb:122:in `make_new'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/connection_pool/threaded.rb:209:in `assign_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/connection_pool/threaded.rb:139:in `acquire'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/connection_pool/threaded.rb:91:in `hold'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/connecting.rb:269:in `synchronize'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/connecting.rb:278:in `test_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/misc.rb:175:in `initialize'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/connecting.rb:57:in `new'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/connecting.rb:57:in `connect'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/core.rb:124:in `connect'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/initializers/database_connection.rb:17:in `block in create_database_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/initializers/database_connection.rb:31:in `with_retries'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/initializers/database_connection.rb:16:in `create_database_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/app.rb:135:in `configure_database_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/app.rb:99:in `post_configure'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/app.rb:50:in `initialize'
pact-workshop-js-broker_app-1  | 	from config.ru:4:in `new'
pact-workshop-js-broker_app-1  | 	from config.ru:4:in `block in <main>'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/configuration.rb:345:in `load_rackup'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/configuration.rb:267:in `app'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/runner.rb:149:in `load_and_bind'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/single.rb:44:in `run'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/launcher.rb:181:in `run'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/cli.rb:80:in `run'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/bin/puma:10:in `<top (required)>'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/bin/puma:23:in `load'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/bin/puma:23:in `<top (required)>'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli/exec.rb:63:in `load'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli/exec.rb:63:in `kernel_load'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli/exec.rb:28:in `run'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli.rb:494:in `exec'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli.rb:30:in `dispatch'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli.rb:24:in `start'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/exe/bundle:49:in `block in <top (required)>'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/exe/bundle:37:in `<top (required)>'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/bin/bundle:23:in `load'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/bin/bundle:23:in `<main>'
pact-workshop-js-broker_app-1  | /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/adapters/postgres.rb:210:in `initialize': could not connect to server: Connection refused (PG::ConnectionBad)
pact-workshop-js-broker_app-1  | 	Is the server running on host "postgres" (172.22.0.2) and accepting
pact-workshop-js-broker_app-1  | 	TCP/IP connections on port 5432?
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/adapters/postgres.rb:210:in `new'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/adapters/postgres.rb:210:in `connect'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/connection_pool.rb:122:in `make_new'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/connection_pool/threaded.rb:209:in `assign_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/connection_pool/threaded.rb:139:in `acquire'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/connection_pool/threaded.rb:91:in `hold'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/connecting.rb:269:in `synchronize'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/connecting.rb:278:in `test_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/misc.rb:175:in `initialize'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/connecting.rb:57:in `new'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/database/connecting.rb:57:in `connect'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/sequel-5.50.0/lib/sequel/core.rb:124:in `connect'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/initializers/database_connection.rb:17:in `block in create_database_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/initializers/database_connection.rb:31:in `with_retries'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/initializers/database_connection.rb:16:in `create_database_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/app.rb:135:in `configure_database_connection'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/app.rb:99:in `post_configure'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/pact_broker-2.92.0/lib/pact_broker/app.rb:50:in `initialize'
pact-workshop-js-broker_app-1  | 	from config.ru:4:in `new'
pact-workshop-js-broker_app-1  | 	from config.ru:4:in `block in <main>'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/configuration.rb:345:in `load_rackup'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/configuration.rb:267:in `app'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/runner.rb:149:in `load_and_bind'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/single.rb:44:in `run'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/launcher.rb:181:in `run'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/lib/puma/cli.rb:80:in `run'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/gems/puma-5.5.2/bin/puma:10:in `<top (required)>'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/bin/puma:23:in `load'
pact-workshop-js-broker_app-1  | 	from /pact_broker/vendor/bundle/ruby/2.6.0/bin/puma:23:in `<top (required)>'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli/exec.rb:63:in `load'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli/exec.rb:63:in `kernel_load'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli/exec.rb:28:in `run'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli.rb:494:in `exec'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli.rb:30:in `dispatch'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/cli.rb:24:in `start'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/exe/bundle:49:in `block in <top (required)>'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/gems/bundler-2.2.10/exe/bundle:37:in `<top (required)>'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/bin/bundle:23:in `load'
pact-workshop-js-broker_app-1  | 	from /usr/local/bundle/bin/bundle:23:in `<main>'
pact-workshop-js-broker_app-1 exited with code 1

Alway meet error when run npm run test:pact --prefix consumer

Thank you for reporting a bug! We appreciate it very much. Issues are a big input into the priorities for Pact-JS development

Software versions

Please provide at least OS and version of pact-js

  • OS: _e.g. Mac Catalina 10.15.5
  • Consumer Pact library: . "@pact-foundation/pact": "^9.11.1",
  • Provider Pact library:
  • Node Version: v14.17.5

Issue Checklist

Please confirm the following:

  • [Confirm ] I have upgraded to the latest
  • [Confirm ] I have the read the FAQs in the Readme
  • [Confirm ] I have triple checked, that there are no unhandled promises in my code and have read the section on intermittent test failures
  • [Confirm ] I have set my log level to debug and attached a log file showing the complete request/response cycle
  • [ Confirm] For bonus points and virtual high fives, I have created a reproduceable git repository (see below) to illustrate the problem

Expected behaviour

Now I following this tutorial https://docs.pactflow.io/docs/workshops/introduction/readme , at step 3 , I checkout code by 'git checkout step 3', then run command 'npm run test:pact --prefix consumer', so it should
return
'❯ npm run test:pact --prefix consumer

PASS src/api.spec.js
PASS src/api.pact.spec.js

Test Suites: 2 passed, 2 total
Tests: 4 passed, 4 total
Snapshots: 0 total
Time: 2.792s, estimated 3s
Ran all test suites.'

Actual behaviour

'MacBooks-MacBook-Air:pact-workshop-js macbookair$ npm run test:pact --prefix consumer

[email protected] test:pact /Users/macbookair/Desktop/Automation project/pact-workshop-js/consumer
CI=true react-scripts test --testTimeout=30000 pact.spec.js

[2021-09-11T07:14:08.642Z] ERROR: [email protected]/39337 on MacBooks-MacBook-Air.local:
Pact Binary Error: /Users/macbookair/Desktop/Automation project/pact-workshop-js/consumer/node_modules/@pact-foundation/pact-node/standalone/darwin-1.86.0/pact/lib/ruby/bin/ruby: line 14: project/pact-workshop-js/consumer/node_modules/@pact-foundation/pact-node/standalone/darwin-1.86.0/pact/lib/ruby/lib/ruby/gems/2.2.0: No such file or directory

[2021-09-11T07:14:08.646Z] WARN: [email protected]/39337 on MacBooks-MacBook-Air.local: Pact exited with code 1.
FAIL src/api.pact.spec.js (32.635s)
API Pact test
getting all products
✕ products exists (6ms)
getting one product
✕ ID 10 exists (2ms)

● API Pact test › getting all products › products exists

Pact startup failed; tried calling service 10 times with no result.

  at retry (node_modules/@pact-foundation/pact-node/src/service.ts:219:6)
  at Server.check (node_modules/@pact-foundation/pact-node/src/service.ts:236:5)
  at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:678:19)

● API Pact test › getting all products › products exists

TypeError: Cannot read property 'addInteraction' of undefined

  24 | 
  25 |             // set up Pact interactions
> 26 |             await provider.addInteraction({
     |                            ^
  27 |                 state: 'products exist',
  28 |                 uponReceiving: 'get all products',
  29 |                 withRequest: {

  at Pact.addInteraction (node_modules/@pact-foundation/src/httpPact.ts:102:29)
  at Object.<anonymous> (src/api.pact.spec.js:26:28)

● API Pact test › getting all products › products exists

TypeError: Cannot read property 'verify' of undefined

  17 | 
  18 |     beforeAll(() => provider.setup());
> 19 |     afterEach(() => provider.verify());
     |                              ^
  20 |     afterAll(() => provider.finalize());
  21 | 
  22 |     describe("getting all products", () => {

  at Pact.verify (node_modules/@pact-foundation/src/httpPact.ts:113:8)
  at Object.<anonymous> (src/api.pact.spec.js:19:30)

● API Pact test › getting one product › ID 10 exists

Pact startup failed; tried calling service 10 times with no result.

  at retry (node_modules/@pact-foundation/pact-node/src/service.ts:219:6)
  at Server.check (node_modules/@pact-foundation/pact-node/src/service.ts:236:5)
  at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:678:19)

● API Pact test › getting one product › ID 10 exists

TypeError: Cannot read property 'addInteraction' of undefined

  59 | 
  60 |             // set up Pact interactions
> 61 |             await provider.addInteraction({
     |                            ^
  62 |                 state: 'product with ID 10 exists',
  63 |                 uponReceiving: 'get product with ID 10',
  64 |                 withRequest: {

  at Pact.addInteraction (node_modules/@pact-foundation/src/httpPact.ts:102:29)
  at Object.<anonymous> (src/api.pact.spec.js:61:28)

● API Pact test › getting one product › ID 10 exists

TypeError: Cannot read property 'verify' of undefined

  17 | 
  18 |     beforeAll(() => provider.setup());
> 19 |     afterEach(() => provider.verify());
     |                              ^
  20 |     afterAll(() => provider.finalize());
  21 | 
  22 |     describe("getting all products", () => {

  at Pact.verify (node_modules/@pact-foundation/src/httpPact.ts:113:8)
  at Object.<anonymous> (src/api.pact.spec.js:19:30)

Test Suites: 1 failed, 1 total
Tests: 2 failed, 2 total
Snapshots: 0 total
Time: 34.134s
Ran all test suites matching /pact.spec.js/i.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] test:pact: CI=true react-scripts test --testTimeout=30000 pact.spec.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] test:pact script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/macbookair/.npm/_logs/2021-09-11T07_14_37_522Z-debug.log'

Steps to reproduce

Relevant log files

"0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli '/usr/local/bin/node',
1 verbose cli '/usr/local/bin/npm',
1 verbose cli 'run',
1 verbose cli 'test:pact',
1 verbose cli '--prefix',
1 verbose cli 'consumer'
1 verbose cli ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'pretest:pact', 'test:pact', 'posttest:pact' ]
5 info lifecycle [email protected]pretest:pact: [email protected]
6 info lifecycle [email protected]
test:pact: [email protected]
7 verbose lifecycle [email protected]test:pact: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]
test:pact: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/macbookair/Desktop/Automation project/pact-workshop-js/consumer/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
9 verbose lifecycle [email protected]test:pact: CWD: /Users/macbookair/Desktop/Automation project/pact-workshop-js/consumer
10 silly lifecycle [email protected]
test:pact: Args: [ '-c', 'CI=true react-scripts test --testTimeout=30000 pact.spec.js' ]
11 silly lifecycle [email protected]test:pact: Returned: code: 1 signal: null
12 info lifecycle [email protected]
test:pact: Failed to exec test:pact script
13 verbose stack Error: [email protected] test:pact: CI=true react-scripts test --testTimeout=30000 pact.spec.js
13 verbose stack Exit status 1
13 verbose stack at EventEmitter. (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:400:28)
13 verbose stack at ChildProcess. (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:400:28)
13 verbose stack at maybeClose (internal/child_process.js:1055:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
14 verbose pkgid [email protected]
15 verbose cwd /Users/macbookair/Desktop/Automation project/pact-workshop-js
16 verbose Darwin 19.5.0
17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "test:pact" "--prefix" "consumer"
18 verbose node v14.17.5
19 verbose npm v6.14.14
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] test:pact: CI=true react-scripts test --testTimeout=30000 pact.spec.js
22 error Exit status 1
23 error Failed at the [email protected] test:pact script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]"

npm ci fails with latest commit

I was using this repo some time around the 20th July (before commits on 27th), and didn't have any issues.
I'm using node version v14.18.2, but my colleague had the same issues with the most recent version of node.
Bit confusing for newbies trying to get going with Pact! I was helping my colleague, and couldn't see what the difference was with her setup until I pulled the latest version.

Some time after the 20th July, commits have been added that cause this error on npm ci

[1] npm ERR! uglify-js not accessible from handlebars
[1] 
[1] npm ERR! A complete log of this run can be found in:
[1] npm ERR!     /Users/andrewmccafferty/.npm/_cacache/_logs/2022-08-19T08_48_53_862Z-debug.log
[1] npm ci --prefix provider exited with code 1
[0] npm ERR! @types/node not accessible from @types/needle
[0] 
[0] npm ERR! A complete log of this run can be found in:
[0] npm ERR!     /Users/andrewmccafferty/.npm/_cacache/_logs/2022-08-19T08_49_05_730Z-debug.log
[0] npm ci --prefix consumer exited with code 1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] postinstall: `concurrently "npm ci --prefix consumer" "npm ci --prefix provider"`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/andrewmccafferty/.npm/_logs/2022-08-19T08_49_05_804Z-debug.log

When I then do the first step in the tutorial, namely npm start --prefix consumer , it fails because the first step didn't install any packages in the consumer or provider folders.

> [email protected] start /Users/andrewmccafferty/Documents/git/bench/pact-workshop-js/consumer
> react-scripts start

sh: react-scripts: command not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! [email protected] start: `react-scripts start`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:

Separate and uplift provider code

While discussing this issue, I noticed that the provider startup code is included in the test file.

// Setup provider server to verify
const app = express();
app.use(apiRoutes);

const server = app.listen('8080');

The example would be clearer if we pulled it out to a file that exports a start() function or similar, highlighting that the server is the application, rather than a separate bit of code that only lives at test time.

While we're there:

  • The port number in that method signature is a number, not a string (although I don't think it matters)
  • We could also modernise the JS at the same time (es6 imports, maybe typescript, not doing Object.assign, etc).

Step 4 test does not fail as described

Summary

The instructions in step 4 read:

"validate the pact generated by the consumer is valid, by executing it against the running service provider, which should fail"

Also: what is meant by, "the running service provider"?

Instead, the test passes with output different from the README file.

Steps to reproduce

  1. Checkout branch, step4.
  2. Run the test, npm run test:pact --prefix provider

The test script is https://github.com/pact-foundation/pact-workshop-js/blob/step4/provider/product/product.pact.test.js
The documentation at https://github.com/pact-foundation/pact-workshop-js/blob/step4/README.md#step-4---verify-the-provider says that the test should fail, but it succeeds with the output:

$ npm run test:pact --prefix provider

> [email protected] test:pact
> npx jest --testTimeout=30000 --testMatch "**/*.pact.test.js"


 RUNS  product/product.pact.test.js
2023-04-19T12:35:17.633449Z  WARN ThreadId(21) pact_matching::metrics: 

Please note:
We are tracking events anonymously to gather important usage statistics like Pact version and operating system. To disable tracking, set the 'PACT_DO_NOT_TRACK' environment variable to 'true'.

[2023-04-19 12:35:17.626 +0000] INFO (27052 on blarn): [email protected]: Verifying provider
[2023-04-19 12:35:17.630 +0000] INFO (27052 on blarn): [email protected]: Verifying Pacts.
[2023-04-19 12:35:17.630 +0000] INFO (27052 on blarn): [email protected]: Verifying Pact Files
 PASS  product/product.pact.test.js
  Pact Verification
    ✓ validates the expectations of ProductService (111ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        0.828s, estimated 1s
Ran all test suites.
[2023-04-19 12:35:17.729 +0000] INFO (27052 on blarn): [email protected]: Verification successful
  console.log product/product.pact.test.js:22
    finished: 0

step 11 - npx pact-broker package is not available, ideally replace with docker cli version of can-i-deploy

yo dudes/dudettes, in the pact-workshop-js guide, it mentions an npx package called pact-broker which doesn’t exist

https://github.com/pact-foundation/pact-workshop-js#can-i-deploy
Should it point to the docker image of the ruby cli here?

https://github.com/pact-foundation/pact-ruby-cli#can-i-deploy

the image is here

https://hub.docker.com/r/pactfoundation/pact-cli

two ways we can run it via docker from the CLI

Attached to our host network

docker run --rm \
  --network='host' \
  pactfoundation/pact-cli:latest \
  broker can-i-deploy \
  --pacticipant FrontendWebsite \
               --broker-base-url http://localhost:8000 \
               --broker-username pact_workshop \
               --broker-password pact_workshop \
               --latest

Attached to our the default network started by the docker-compose setup

docker run --rm \
  --network='pact-workshop-js_default' \
  pactfoundation/pact-cli:latest \
  broker can-i-deploy \
  --pacticipant FrontendWebsite \
               --broker-base-url http://broker_app:80 \
               --broker-username pact_workshop \
               --broker-password pact_workshop \
               --latest

pact-broker publish not responding.

I'm currently working through the workshop and on step 11, I seem to be unable to publish the consumer pact successfully. "pact:publish": "pact-broker publish ./pacts --auto-detect-version-properties --broker-base-url=http://localhost:8000 --broker-username pact_workshop --broker-password pact_workshop " just seems to hang indefinitely. It neither errors, times out, nor does it display the confirmation message.
I am able to navigate to the broker on a browser and connect using curl after running docker-compose up. I have had the same tried on a colleague's machine and confirms the same issue happens. Working off HEAD on step11 branch.

issue running npm i on M1 Mac

If you clone the pact-workshop-js repo and try to install using a Mac m1 computer then you get the following error:

npm ERR! code EBADPLATFORM
[0] npm ERR! notsup Unsupported platform for @pact-foundation/[email protected]: wanted {"os":"darwin,linux,win32","arch":"x64,ia32"} (current: {"os":"darwin","arch":"arm64"})
[0] npm ERR! notsup Valid OS: darwin,linux,win32
[0] npm ERR! notsup Valid Arch: x64,ia32
[0] npm ERR! notsup Actual OS: darwin
[0] npm ERR! notsup Actual Arch: arm64

Verifier verifyProvider took 17 min to run test

Hi there,

I try to run a test on src/provider but it always timeout so I had to setTimeout on Jest and Verifier(opts) to 30 sec but it not work so I decided to take 20 min and then it works! It took 17 min to process a test.

Any suggestions on this.
(I'm using node v12.16.1, MacBook air)

Debug logs here...

Click to expand!
 $ yarn test:pact
yarn run v1.22.4
$ npx jest --testMatch "**/*.pact.test.js"
[2020-05-25T03:27:31.429Z]  INFO: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Verifying provider
[2020-05-25T03:27:31.445Z]  INFO: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Verifying Pacts.
[2020-05-25T03:27:31.446Z]  INFO: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Verifying Pact Files
[2020-05-25T03:27:31.447Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Starting pact binary 'standalone/darwin-1.84.0/pact/bin/pact-provider-verifier', with arguments [--provider-states-setup-url http://localhost:51993/_pactSetup --provider-base-url http://localhost:51993 --provider ProductService --provider-app-version 1.0.0 --pact-broker-base-url http://localhost:8081 --broker-username pact_workshop --broker-password pact_workshop], and environment: {"cwd":"/Users/thuchchai/Github/pact-workshop-js/provider/node_modules/@pact-foundation/pact-node","detached":true,"env":{"rvm_use_flag":"","TERM_PROGRAM":"vscode","rvm_bin_path":"/Users/thuchchai/.rvm/bin","NODE":"/usr/local/bin/node","npm_package_devDependencies__pact_foundation_pact":"^9.6.0","INIT_CWD":"/Users/thuchchai/Github/pact-workshop-js/provider","rvm_quiet_flag":"","GEM_HOME":"/Users/thuchchai/.rvm/gems/ruby-2.4.2","ANDROID_HOME":"/Users/thuchchai/Library/Android/sdk","npm_config_version_git_tag":"true","rvm_gemstone_url":"","SHELL":"/bin/zsh","TERM":"xterm-256color","npm_package_devDependencies_jest":"^24.9.0","rvm_docs_type":"","IRBRC":"/Users/thuchchai/.rvm/rubies/ruby-2.4.2/.irbrc","TMPDIR":"/var/folders/qn/5ldvls554cq7rjy0h0fwpr6r0000gp/T/","npm_config_init_license":"MIT","npm_config_email":"[email protected]","TERM_PROGRAM_VERSION":"1.45.1","rvm_hook":"","MY_RUBY_HOME":"/Users/thuchchai/.rvm/rubies/ruby-2.4.2","TERM_SESSION_ID":"***","npm_config_git_tag_version":"","npm_config_registry":"https://registry.yarnpkg.com","LC_ALL":"en_US.UTF-8","ZSH":"/Users/thuchchai/.oh-my-zsh","USER":"thuchchai","npm_package_scripts_test_pact":"npx jest --testMatch \"**/*.pact.test.js\"","npm_package_description":"","npm_config_python":"/usr/bin/python","rvm_gemstone_package_file":"","npm_package_license":"ISC","_system_type":"Darwin","COMMAND_MODE":"unix2003","rvm_path":"/Users/thuchchai/.rvm","SSH_AUTH_SOCK":"/private/tmp/com.apple.launchd.HR9T4hvDBh/Listeners","__CF_USER_TEXT_ENCODING":"0x1F6:0x0:0x0","npm_package_devDependencies_eslint":"^6.8.0","rvm_proxy":"","npm_execpath":"/usr/local/Cellar/yarn/1.22.4/libexec/bin/yarn.js","rvm_ruby_file":"","PAGER":"less","npm_package_dependencies_cors":"^2.8.5","LSCOLORS":"Gxfxcxdxbxegedabagacad","rvm_silent_flag":"","rvm_prefix":"/Users/thuchchai","rvm_ruby_make":"","PATH":"/Users/thuchchai/Github/pact-workshop-js/provider/node_modules/.bin:/var/folders/qn/5ldvls554cq7rjy0h0fwpr6r0000gp/T/yarn--1590377241825-0.35979851382387706:/Users/thuchchai/Github/pact-workshop-js/provider/node_modules/.bin:/Users/thuchchai/.config/yarn/link/node_modules/.bin:/usr/local/libexec/lib/node_modules/npm/bin/node-gyp-bin:/usr/local/lib/node_modules/npm/bin/node-gyp-bin:/usr/local/bin/node_modules/npm/bin/node-gyp-bin:/Users/thuchchai/.rvm/gems/ruby-2.4.2/bin:/Users/thuchchai/.rvm/gems/ruby-2.4.2@global/bin:/Users/thuchchai/.rvm/rubies/ruby-2.4.2/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin:/Users/thuchchai/ImageMagick-7.0.8/bin:/Users/thuchchai/.fastlane/bin:/Users/thuchchai/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/thuchchai/.rvm/gems/ruby-2.4.2/bin:/Users/thuchchai/.rvm/gems/ruby-2.4.2@global/bin:/Users/thuchchai/.rvm/rubies/ruby-2.4.2/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin:/Users/thuchchai/ImageMagick-7.0.8/bin:/Users/thuchchai/.fastlane/bin:/Users/thuchchai/bin:/Users/thuchchai/Library/Android/sdk/tools:/Users/thuchchai/Library/Android/sdk/tools/bin:/Users/thuchchai/Library/Android/sdk/platform-tools:/Users/thuchchai/.rvm/bin:/Users/thuchchai/Library/Android/sdk/tools:/Users/thuchchai/Library/Android/sdk/tools/bin:/Users/thuchchai/Library/Android/sdk/platform-tools:/Users/thuchchai/.rvm/bin","npm_config_argv":"{\"remain\":[],\"cooked\":[\"run\",\"test:pact\"],\"original\":[\"test:pact\"]}","_":"/usr/local/bin/npx","LaunchInstanceID":"5D1006F6-8044-460F-B7E6-D42D15C92426","PWD":"/Users/thuchchai/Github/pact-workshop-js/provider","JAVA_HOME":"/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home","npm_lifecycle_event":"test:pact","rvm_sdk":"","LANG":"en_US.UTF-8","npm_package_name":"product-service","ITERM_PROFILE":"Default","npm_package_scripts_start":"node server.js","npm_config_version_commit_hooks":"true","_system_arch":"x86_64","XPC_FLAGS":"0x0","npm_config_username":"thuchchai","npm_config_bin_links":"true","_system_version":"10.15","MAGICK_HOME":"/Users/thuchchai/ImageMagick-7.0.8","npm_package_main":"app.js","XPC_SERVICE_NAME":"0","npm_package_version":"1.0.0","rvm_version":"1.29.7 (latest)","rvm_script_name":"","rvm_pretty_print_flag":"","COLORFGBG":"15;0","SHLVL":"4","HOME":"/Users/thuchchai","rvm_ruby_mode":"","VSCODE_GIT_ASKPASS_MAIN":"/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass-main.js","APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL":"true","npm_package_scripts_test":"npx jest","LC_TERMINAL_VERSION":"3.3.7","npm_config_save_prefix":"^","npm_config_strict_ssl":"true","npm_config_version_git_message":"v%s","NPM_CONFIG_PYTHON":"/usr/bin/python","ITERM_SESSION_ID":"****","LOGNAME":"thuchchai","LESS":"-R","YARN_WRAP_OUTPUT":"false","PREFIX":"/usr/local","rvm_alias_expanded":"","npm_lifecycle_script":"npx jest --testMatch \"**/*.pact.test.js\"","LC_CTYPE":"en_US.UTF-8","VSCODE_GIT_IPC_HANDLE":"/var/folders/qn/5ldvls554cq7rjy0h0fwpr6r0000gp/T/vscode-git-3548be83de.sock","GEM_PATH":"/Users/thuchchai/.rvm/gems/ruby-2.4.2:/Users/thuchchai/.rvm/gems/ruby-2.4.2@global","rvm_nightly_flag":"","npm_config_version_git_sign":"","npm_config_ignore_scripts":"","npm_config_user_agent":"yarn/1.22.4 npm/? node/v12.16.1 darwin x64","rvm_ruby_make_install":"","VSCODE_GIT_ASKPASS_NODE":"/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Renderer).app/Contents/MacOS/Code Helper (Renderer)","GIT_ASKPASS":"/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass.sh","rvm_niceness":"","LC_TERMINAL":"iTerm2","rvm_ruby_bits":"","npm_package_dependencies_express":"^4.17.1","rvm_bin_flag":"","npm_config_init_version":"1.0.0","npm_config_ignore_optional":"","rvm_only_path_flag":"","SECURITYSESSIONID":"186a6","RUBY_VERSION":"ruby-2.4.2","_system_name":"OSX","COLORTERM":"truecolor","npm_node_execpath":"/usr/local/bin/node","npm_config_version_tag_prefix":"v","NODE_ENV":"test","JEST_WORKER_ID":"1"}}
[2020-05-25T03:27:31.457Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Created 'standalone/darwin-1.84.0/pact/bin/pact-provider-verifier' process with PID: 5469
[2020-05-25T03:32:35.094Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
    INFO: Fetching pacts for ProductService from http://localhost:8081
    INFO: Reading pact at http://pact_workshop:*****@localhost:8081/pacts/provider/ProductService/consumer/FrontendWebsite/version/86a4112
    
    
[2020-05-25T03:32:35.097Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
    Verifying a pact between FrontendWebsite and ProductService
      Given products exist
        get all products
          with GET /products
            returns a response which
    

 RUNS  product/product.pact.test.js
[2020-05-25T03:35:05.646Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Proxing /products
[2020-05-25T03:35:05.681Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              has status code 200
              has a matching body
              includes headers
                "Content-Type" which equals "application/json; charset=utf-8"
      Given no products exist
        get all products
          with GET /products
            returns a response which
    
[2020-05-25T03:37:36.678Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Proxing /products
[2020-05-25T03:37:36.717Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              has status code 200
    
[2020-05-25T03:37:36.719Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              has a matching body
    
[2020-05-25T03:37:36.720Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              includes headers
    
[2020-05-25T03:37:36.721Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
                "Content-Type" which equals "application/json; charset=utf-8"
      Given products exist
    
[2020-05-25T03:37:36.726Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
        get all products with no auth token
    
[2020-05-25T03:37:36.726Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
          with GET /products
    
[2020-05-25T03:37:36.726Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
            returns a response which
    
[2020-05-25T03:40:07.511Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Proxing /products
[2020-05-25T03:40:07.532Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              has status code 401
    
[2020-05-25T03:40:07.537Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
      Given product with ID 10 exists
    
[2020-05-25T03:40:07.537Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
        get product with ID 10
          with GET /product/10
    
[2020-05-25T03:40:07.537Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
            returns a response which
    
[2020-05-25T03:42:38.557Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Proxing /product/10
[2020-05-25T03:42:38.596Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              has status code 200
    
[2020-05-25T03:42:38.602Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              has a matching body
    
[2020-05-25T03:42:38.602Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              includes headers
    
[2020-05-25T03:42:38.610Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
                "Content-Type" which equals "application/json; charset=utf-8"
    
[2020-05-25T03:42:38.611Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
      Given product with ID 11 does not exist
    
[2020-05-25T03:42:38.611Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
        get product with ID 11
    
[2020-05-25T03:42:38.612Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
          with GET /product/11
    
[2020-05-25T03:42:38.612Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
            returns a response which
    
[2020-05-25T03:45:09.544Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Proxing /product/11
[2020-05-25T03:45:09.578Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              has status code 404
    
[2020-05-25T03:45:09.579Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
      Given product with ID 10 exists
    
[2020-05-25T03:45:09.579Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
        get product by ID 10 with no auth token
          with GET /product/10
            returns a response which
    
[2020-05-25T03:45:09.589Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Proxing /product/10
[2020-05-25T03:45:09.595Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
              has status code 401
    
[2020-05-25T03:45:09.598Z] DEBUG: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: 
    
    6 interactions, 0 failures

Last Result

 PASS  product/product.pact.test.js (1062.351s)
  Pact Verification
    ✓ validates the expectations of ProductService (1058327ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1064.617s
Ran all test suites.
[2020-05-25T03:45:09.682Z]  INFO: [email protected]/5449 on THUCHCHAIs-MacBook-Air.local: Pact Verification succeeded.
  console.log product/product.pact.test.js:66
    Pact Verification Complete!

  console.log product/product.pact.test.js:67
    INFO: Fetching pacts for ProductService from http://localhost:8081
    INFO: Reading pact at http://pact_workshop:*****@localhost:8081/pacts/provider/ProductService/consumer/FrontendWebsite/version/86a4112
    
    
    Verifying a pact between FrontendWebsite and ProductService
      Given products exist
        get all products
          with GET /products
            returns a response which
    
              has status code 200
              has a matching body
              includes headers
                "Content-Type" which equals "application/json; charset=utf-8"
      Given no products exist
        get all products
          with GET /products
            returns a response which
    
              has status code 200
    
              has a matching body
    
              includes headers
    
                "Content-Type" which equals "application/json; charset=utf-8"
      Given products exist
    
        get all products with no auth token
    
          with GET /products
    
            returns a response which
    
              has status code 401
    
      Given product with ID 10 exists
    
        get product with ID 10
          with GET /product/10
    
            returns a response which
    
              has status code 200
    
              has a matching body
    
              includes headers
    
                "Content-Type" which equals "application/json; charset=utf-8"
    
      Given product with ID 11 does not exist
    
        get product with ID 11
    
          with GET /product/11
    
            returns a response which
    
              has status code 404
    
      Given product with ID 10 exists
    
        get product by ID 10 with no auth token
          with GET /product/10
            returns a response which
    
              has status code 401
    
    6 interactions, 0 failures
    
✨  Done in 1068.36s.

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string

Hi,

Thanks for all the work.

Step 1, I had the following issue in the browser :

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined at validateString (internal/validators.js:112:11) at Object.join (path.js:375:7) at noopServiceWorkerMiddleware (C:\Devs\work\pact-workshop-js\consumer\node_modules\react-dev-utils\noopServiceWorkerMiddleware.js:14:26) at Layer.handle [as handle_request] (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\index.js:317:13) at C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\index.js:284:7 at Function.process_params (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\index.js:335:12) at next (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\index.js:275:10) at launchEditorMiddleware (C:\Devs\work\pact-workshop-js\consumer\node_modules\react-dev-utils\errorOverlayMiddleware.js:20:7) at Layer.handle [as handle_request] (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\index.js:317:13) at C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\index.js:284:7 at Function.process_params (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\index.js:335:12) at next (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\index.js:275:10) at handleWebpackInternalMiddleware (C:\Devs\work\pact-workshop-js\consumer\node_modules\react-dev-utils\evalSourceMapMiddleware.js:42:7) at Layer.handle [as handle_request] (C:\Devs\work\pact-workshop-js\consumer\node_modules\express\lib\router\layer.js:95:5)

  • Windows 10
  • npm 6.12.0
  • node 12.13

To fix this, I had to upgrade to react-scripts 3.4.0 (see this)

Step 3 - Running pact tests with 'npm run test:pact --prefix consumer' command tests fail with 'Error in native callback'

Using a Mac OS Monterey 12.5.1
NPM version 9.6.4
Node version 18.15.0

In step3
Running pact tests with 'npm run test:pact --prefix consumer' command tests fail with 'Error in native callback'

`Error in native callback

  at Object.mockServerMismatches (node_modules/@pact-foundation/pact-core/src/consumer/index.ts:94:13)
  at PactV3.<anonymous> (node_modules/@pact-foundation/src/v3/pact.ts:207:39)
  at step (node_modules/@pact-foundation/pact/src/v3/pact.js:33:23)
  at Object.throw (node_modules/@pact-foundation/pact/src/v3/pact.js:14:53)
  at rejected (node_modules/@pact-foundation/pact/src/v3/pact.js:6:65)`

https://github.com/druoid/pact-workshop-js (no changes made to code)

step1 npm install -- Maximum call stack size exceeded

I am doing a PoC for pact for work, tried to follow this workshop and ran into this issue. Can someone help here?

node 14.16.1 npm 6.14.12
Steps I tried multiple times:

  1. git clone
  2. git check out step1
  3. npm install

Tried to install pact global before running npm install, didn't work either.

Windows installation issues

Using node 12.18.2 and the bundled version of npm, executing npm install on Windows 10 results in the following output:

[0] > [email protected] install C:\Users\nope\git\pact-workshop-js\consumer\node_modules\chokidar\node_modules\fsevents
[0] > node-gyp rebuild
[0]
[0]
[0] C:\Users\nope\git\pact-workshop-js\consumer\node_modules\chokidar\node_modules\fsevents>if not defined npm_config_node_gyp (node "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
[0] Traceback (most recent call last):
[0]   File "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 50, in <module>
[0]     sys.exit(gyp.script_main())
[0]   File "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 554, in script_main
[0]     return main(sys.argv[1:])
[0]   File "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 547, in main
[0]     return gyp_main(args)
[0]   File "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 532, in gyp_main
[0]     generator.GenerateOutput(flat_list, targets, data, params)
[0]   File "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 2030, in GenerateOutput
[0]     sln_projects, project_objects, flat=msvs_version.FlatSolution())
[0]   File "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1787, in _GatherSolutionFolders
[0]     return _DictsToFolders('', root, flat)
[0]   File "C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1740, in _DictsToFolders
[0]     for folder, contents in bucket.items():
[0] AttributeError: 'MSVSProject' object has no attribute 'items'
[0] gyp ERR! configure error
[0] gyp ERR! stack Error: `gyp` failed with exit code: 1
[0] gyp ERR! stack     at ChildProcess.onCpExit (C:\ProgramData\nvm\v12.18.2\node_modules\npm\node_modules\node-gyp\lib\configure.js:351:16)
[0] gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
[0] gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
[0] gyp ERR! System Windows_NT 10.0.19041
[0] gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\ProgramData\\nvm\\v12.18.2\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
[0] gyp ERR! cwd C:\Users\nope\git\pact-workshop-js\consumer\node_modules\chokidar\node_modules\fsevents
[0] gyp ERR! node -v v12.18.2
[0] gyp ERR! node-gyp -v v5.1.0
[0] gyp ERR! not ok

What the heck is going on here? Why is fsevents even attempting to build on Windows?

Pact.json is not created / No failures in console

Hello,
Im writing a small programm for a University project.
I'd like to test it with the pact framewok. Unfortunately, no Pact.json file is created for me, although there are no errors.
Below you can see the source code of my javascript file and the console output:

`const {Pact} = require('@pact-foundation/pact');
const axios = require('axios');
const path = require('path');

const provider = new Pact({
consumer: 'consumer',
provider: 'producer',
port: 1234,
log: path.resolve(process.cwd(), 'logs', 'pact.log'),
dir: path.resolve(process.cwd(), 'pacts'),
logLevel: 'INFO',
});

describe('Pact Consumer', () => {

beforeAll(() => {
    return provider.setup();
});

afterEach(async () => {
    await provider.verify();
});

afterAll(async () => {
    return provider.finalize();
});

describe('consumer', () => {

beforeEach
(() =>

        provider.addInteraction({
            state: "valid date",
            uponReceiving: "a request for JSON data",
            withRequest: {
                method: "GET",
                path: "/test",
                headers: { Accept: "application/json" },
            },
            willRespondWith: {
                status: 200,
                headers: { "Content-Type": "application/json" },
                body:
                    {
                        name: 'Scherr',
                        surname: 'Valerian',
                        age: 28,
                    },

            },


    }),


);

});

describe('test', () => {
it('should return the correct data', () => {

  axios.get('localhost:1234/test').then(response => {
    expect(response[0].name).toBe('Scherr');
    expect(response[0].surname).toBe('Valerian');
    expect(response[0].age).toBe(28);
})

});
});
});
});

`

Console:
"C:\Program Files\nodejs\node.exe" C:\Users\vsche\IdeaProjects\testscenario\webservice\node_modules\jasmine\bin\jasmine.js --reporter=C:\Users\vsche\.IntelliJIdea2019.3\config\plugins\IdeaJasmine\lib\intellij_reporter.js C:/Users/vsche/IdeaProjects/testscenario/webservice/spec/WebService.spec.js --filter=test [2020-06-05T15:01:45.085Z] INFO: [email protected]/16548 on DESKTOP-FH2DU0O: Creating Pact Server with options: {"consumer":"consumer","cors":false,"dir":"C:\\Users\\vsche\\IdeaProjects\\testscenario\\pacts","host":"127.0.0.1","log":"C:\\Users\\vsche\\IdeaProjects\\testscenario\\logs\\pact.log","pactFileWriteMode":"overwrite","port":1234,"provider":"producer","spec":2,"ssl":false} [2020-06-05T15:01:46.128Z] INFO: [email protected]/16548 on DESKTOP-FH2DU0O: Setting up Pact with Consumer "consumer" and Provider "producer" using mock service on Port: "1234" [2020-06-05T15:01:46.168Z] INFO: [email protected]/16548 on DESKTOP-FH2DU0O: Pact File Written [2020-06-05T15:01:46.168Z] INFO: [email protected]/16548 on DESKTOP-FH2DU0O: Removing Pact process with PID: 7944 [2020-06-05T15:01:48.313Z] INFO: [email protected]/16548 on DESKTOP-FH2DU0O: Deleting Pact Server with options: {"consumer":"consumer","cors":false,"dir":"C:\\Users\\vsche\\IdeaProjects\\testscenario\\pacts","host":"127.0.0.1","log":"C:\\Users\\vsche\\IdeaProjects\\testscenario\\logs\\pact.log","pactFileWriteMode":"overwrite","port":1234,"provider":"producer","spec":2,"ssl":false}

I am grateful for any help and thanks in advance

Step11 pactBrokerUrl requires one of the following properties

Have followed all steps up to step11 without issue and getting the following error...

pactBrokerUrl requires one of the following properties: pactUrls,consumerVersionSelectors,consumerVersionTags

when running the following command >PACT_BROKER_PUBLISH_VERIFICATION_RESULTS=true npm run test:pact --prefix provider

Running the workshop on a MAC with M1 chip

Errors when running the tests in step 4

Hi there,

Whilst following the tutorial, I am getting the following errors when i run the tests using the command: npm run test:pact --prefix consumer. I have all the node_modules installed, im using node version 10.8.0

FAIL src/api.pact.spec.js (6.973s)
  API Pact test
    getting all products
      ✕ products exists (6ms)
      ✕ no products exists (1ms)
      ✕ no auth token (1ms)
    getting one product
      ✕ ID 10 exists (1ms)
      ✕ product does not exist (1ms)
      ✕ no auth token

  ● API Pact test › getting all products › products exists

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)

  ● API Pact test › getting all products › products exists

    TypeError: Cannot read property 'addInteraction' of undefined

      30 |
      31 |             // set up Pact interactions
    > 32 |             await provider.addInteraction({
         |                            ^
      33 |                 state: 'products exist',
      34 |                 uponReceiving: 'get all products',
      35 |                 withRequest: {

      at Pact.addInteraction (node_modules/@pact-foundation/src/httpPact.ts:102:29)
      at Object.test (src/api.pact.spec.js:32:28)

  ● API Pact test › getting all products › products exists

    TypeError: Cannot read property 'verify' of undefined

      19 |
      20 |     afterEach(async () => {
    > 21 |         await provider.verify();
         |                        ^
      22 |     });
      23 |
      24 |     afterAll(async () => {

      at Pact.verify (node_modules/@pact-foundation/src/httpPact.ts:113:8)
      at Object.afterEach (src/api.pact.spec.js:21:24)

  ● API Pact test › getting all products › no products exists

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)

  ● API Pact test › getting all products › no products exists

    TypeError: Cannot read property 'addInteraction' of undefined

      66 |
      67 |             // set up Pact interactions
    > 68 |             await provider.addInteraction({
         |                            ^
      69 |                 state: 'no products exist',
      70 |                 uponReceiving: 'get all products',
      71 |                 withRequest: {

      at Pact.addInteraction (node_modules/@pact-foundation/src/httpPact.ts:102:29)
      at Object.test (src/api.pact.spec.js:68:28)

  ● API Pact test › getting all products › no products exists

    TypeError: Cannot read property 'verify' of undefined

      19 |
      20 |     afterEach(async () => {
    > 21 |         await provider.verify();
         |                        ^
      22 |     });
      23 |
      24 |     afterAll(async () => {

      at Pact.verify (node_modules/@pact-foundation/src/httpPact.ts:113:8)
      at Object.afterEach (src/api.pact.spec.js:21:24)

  ● API Pact test › getting all products › no auth token

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)

  ● API Pact test › getting all products › no auth token

    TypeError: Cannot read property 'addInteraction' of undefined

       96 |
       97 |             // set up Pact interactions
    >  98 |             await provider.addInteraction({
          |                            ^
       99 |                 state: 'products exist',
      100 |                 uponReceiving: 'get all products with no auth token',
      101 |                 withRequest: {

      at Pact.addInteraction (node_modules/@pact-foundation/src/httpPact.ts:102:29)
      at Object.test (src/api.pact.spec.js:98:28)

  ● API Pact test › getting all products › no auth token

    TypeError: Cannot read property 'verify' of undefined

      19 |
      20 |     afterEach(async () => {
    > 21 |         await provider.verify();
         |                        ^
      22 |     });
      23 |
      24 |     afterAll(async () => {

      at Pact.verify (node_modules/@pact-foundation/src/httpPact.ts:113:8)
      at Object.afterEach (src/api.pact.spec.js:21:24)

  ● API Pact test › getting one product › ID 10 exists

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)

  ● API Pact test › getting one product › ID 10 exists

    TypeError: Cannot read property 'addInteraction' of undefined

      119 |
      120 |             // set up Pact interactions
    > 121 |             await provider.addInteraction({
          |                            ^
      122 |                 state: 'product with ID 10 exists',
      123 |                 uponReceiving: 'get product with ID 10',
      124 |                 withRequest: {

      at Pact.addInteraction (node_modules/@pact-foundation/src/httpPact.ts:102:29)
      at Object.test (src/api.pact.spec.js:121:28)

  ● API Pact test › getting one product › ID 10 exists

    TypeError: Cannot read property 'verify' of undefined

      19 |
      20 |     afterEach(async () => {
    > 21 |         await provider.verify();
         |                        ^
      22 |     });
      23 |
      24 |     afterAll(async () => {

      at Pact.verify (node_modules/@pact-foundation/src/httpPact.ts:113:8)
      at Object.afterEach (src/api.pact.spec.js:21:24)

  ● API Pact test › getting one product › product does not exist

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)

  ● API Pact test › getting one product › product does not exist

    TypeError: Cannot read property 'addInteraction' of undefined

      157 |
      158 |             // set up Pact interactions
    > 159 |             await provider.addInteraction({
          |                            ^
      160 |                 state: 'product with ID 11 does not exist',
      161 |                 uponReceiving: 'get product with ID 11',
      162 |                 withRequest: {

      at Pact.addInteraction (node_modules/@pact-foundation/src/httpPact.ts:102:29)
      at Object.test (src/api.pact.spec.js:159:28)

  ● API Pact test › getting one product › product does not exist

    TypeError: Cannot read property 'verify' of undefined

      19 |
      20 |     afterEach(async () => {
    > 21 |         await provider.verify();
         |                        ^
      22 |     });
      23 |
      24 |     afterAll(async () => {

      at Pact.verify (node_modules/@pact-foundation/src/httpPact.ts:113:8)
      at Object.afterEach (src/api.pact.spec.js:21:24)

  ● API Pact test › getting one product › no auth token

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)

  ● API Pact test › getting one product › no auth token

    TypeError: Cannot read property 'addInteraction' of undefined

      181 |
      182 |             // set up Pact interactions
    > 183 |             await provider.addInteraction({
          |                            ^
      184 |                 state: 'product with ID 10 exists',
      185 |                 uponReceiving: 'get product by ID 10 with no auth token',
      186 |                 withRequest: {

      at Pact.addInteraction (node_modules/@pact-foundation/src/httpPact.ts:102:29)
      at Object.test (src/api.pact.spec.js:183:28)

  ● API Pact test › getting one product › no auth token

    TypeError: Cannot read property 'verify' of undefined

      19 |
      20 |     afterEach(async () => {
    > 21 |         await provider.verify();
         |                        ^
      22 |     });
      23 |
      24 |     afterAll(async () => {

      at Pact.verify (node_modules/@pact-foundation/src/httpPact.ts:113:8)
      at Object.afterEach (src/api.pact.spec.js:21:24)

Test Suites: 1 failed, 1 total
Tests:       6 failed, 6 total
Snapshots:   0 total
Time:        7.528s
Ran all test suites matching /pact.spec.js/i.
Jest did not exit one second after the test run has completed.

Step9 npm install failes

Scenario
Checkout the repo
checkout step9 branch
run npm install

ci --prefix provider exited with code 0
npm ERR! code 1
npm ERR! path /Users/amitabak/dev/tutorials/pact-workshop-js
npm ERR! command failed
npm ERR! command sh -c concurrently "npm ci --prefix consumer" "npm ci --prefix provider"

npm ERR! A complete log of this run can be found in:

Note that step 7 completes OK
Seems the package-lock.json has some breaking changes in step9

Step 12 (Pactflow) Error when executing Pact verifier (even without broker)

I encountered a handful of broken changes in each "step branches" following the JS workshop but managed to get around/fix most of them by googling. When I get to Step 12, I was dealing with SSL error publishing to Pactlow. Spent the entire day googling, generating cert, setting 'SSL_CERT_FILE' environment var - without much luck. l finally gave up and set 'PACT_DISABLE_SSL_VERIFICATION = true'. I was able to publish PACT to pactflow.

However, when I run 'npm run test:pact --prefix provider ' to execute PACT verifier, I started getting the error below.

thread '' panicked at 'Client::new(): reqwest::Error { kind: Builder, source: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." } }', C:\Users\runneradmin.cargo\registry\src\github.com-1ecc6299db9ec823\reqwest-0.11.11\src\async_impl\client.r FAIL product/product.pact.test.js

I have never seen before prior to Step 12. I even updated the configuration to use local PACT file instead of broker and still getting the same error.

Note: Provider verifies with local Pact was working prior to Step 12.

Please help!

ERROR Message

See attached error

Or below:

npm run test:pact --prefix provider

[email protected] test:pact
npx jest --testTimeout 30000 --testMatch "**/product/product.pact.test.js" --verbose

RUNS product/product.pact.test.js
2022-11-06T02:32:11.435005Z WARN ThreadId(09) pact_matching::metrics:

Please note:
We are tracking events anonymously to gather important usage statistics like Pact version and operating system. To disable tracking, set the 'PACT_DO_NOT_TRACK' environment variable to 'true'.

thread '' panicked at 'Client::new(): reqwest::Error { kind: Builder, source: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." } }', C:\Users\runneradmin.cargo\registry\src\github.com-1ecc6299db9ec823\reqwest-0.11.11\src\async_impl\client.r FAIL product/product.pact.test.js
Pact Verification
× validates the expectations of ProductService (31ms)

● Pact Verification › validates the expectations of ProductService

Verfication failed

  at node_modules/@pact-foundation/pact-core/src/verifier/nativeVerifier.ts:50:20

[2022-11-06 02:32:11.415 +0000] INFO (4036 on NWLPT597): [email protected]: Verifying provider
[2022-11-06 02:32:11.426 +0000] INFO (4036 on NWLPT597): [email protected]: Verifying Pacts.
[2022-11-06 02:32:11.428 +0000] INFO (4036 on NWLPT597): [email protected]: Verifying Pact Files
[2022-11-06 02:32:11.438 +0000] ERROR (4036 on NWLPT597): [email protected]: Verification unsuccessful
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 total
Snapshots: 0 total
Time: 5.275s, estimated 6s
Ran all test suites.

provider\product\product.pact.test.js

See attached JS (renamed as txt): product.pact.test.js.txt

consumer\pacts\FrontendWebsite-ProductService.json

See attached JSON (renamed as txt): FrontendWebsite-ProductService.json.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.