From 1d494819fb87d758034f749140113d9d2a502bda Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Mon, 4 Sep 2023 10:28:18 +1000 Subject: [PATCH 1/5] chore: remove symbol from contract --- .../pactflow_publish_provider_contract_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/service_providers/pactflow_publish_provider_contract_spec.rb b/spec/service_providers/pactflow_publish_provider_contract_spec.rb index d7ffdcf..35f8308 100644 --- a/spec/service_providers/pactflow_publish_provider_contract_spec.rb +++ b/spec/service_providers/pactflow_publish_provider_contract_spec.rb @@ -18,7 +18,7 @@ branch_name: "main", tags: ["dev"], contract: { - content: { some: "contract" }.to_yaml, + content: { "some" => "contract" }.to_yaml, content_type: "application/yaml", specification: "oas" }, From 395aa9e56023fb617858384c6d86336b7e27388b Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Mon, 4 Sep 2023 11:26:02 +1000 Subject: [PATCH 2/5] chore: update expectation for base 64 encoded contract --- doc/pacts/markdown/Pact Broker Client - Pactflow.md | 6 +++--- doc/pacts/markdown/README.md | 2 +- spec/pacts/pact_broker_client-pactflow.json | 4 ++-- .../pactflow_publish_provider_contract_spec.rb | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/pacts/markdown/Pact Broker Client - Pactflow.md b/doc/pacts/markdown/Pact Broker Client - Pactflow.md index e092e37..7133e5e 100644 --- a/doc/pacts/markdown/Pact Broker Client - Pactflow.md +++ b/doc/pacts/markdown/Pact Broker Client - Pactflow.md @@ -56,7 +56,7 @@ Upon receiving **a request to create a provider contract** from Pact Broker Clie "Accept": "application/hal+json" }, "body": { - "content": "LS0tCjpzb21lOiBjb250cmFjdAo=", + "content": "LS0tCnNvbWU6IGNvbnRyYWN0Cg==", "contractType": "oas", "contentType": "application/yaml", "verificationResults": { @@ -90,7 +90,7 @@ Given **there is a pf:ui href in the response**, upon receiving **a request to c "Accept": "application/hal+json" }, "body": { - "content": "LS0tCjpzb21lOiBjb250cmFjdAo=", + "content": "LS0tCnNvbWU6IGNvbnRyYWN0Cg==", "contractType": "oas", "contentType": "application/yaml", "verificationResults": { @@ -104,7 +104,7 @@ Given **there is a pf:ui href in the response**, upon receiving **a request to c } } ``` -Pactflow will respond with: +PactFlow will respond with: ```json { "status": 201, diff --git a/doc/pacts/markdown/README.md b/doc/pacts/markdown/README.md index 5ba4433..4c45249 100644 --- a/doc/pacts/markdown/README.md +++ b/doc/pacts/markdown/README.md @@ -1,4 +1,4 @@ ### Pacts for Pact Broker Client * [Pact Broker](Pact%20Broker%20Client%20-%20Pact%20Broker.md) -* [PactFlow](Pact%20Broker%20Client%20-%20Pactflow.md) +* [PactFlow](Pact%20Broker%20Client%20-%20PactFlow.md) diff --git a/spec/pacts/pact_broker_client-pactflow.json b/spec/pacts/pact_broker_client-pactflow.json index 8a7a970..78a694b 100644 --- a/spec/pacts/pact_broker_client-pactflow.json +++ b/spec/pacts/pact_broker_client-pactflow.json @@ -16,7 +16,7 @@ "Accept": "application/hal+json" }, "body": { - "content": "LS0tCjpzb21lOiBjb250cmFjdAo=", + "content": "LS0tCnNvbWU6IGNvbnRyYWN0Cg==", "contractType": "oas", "contentType": "application/yaml", "verificationResults": { @@ -47,7 +47,7 @@ "Accept": "application/hal+json" }, "body": { - "content": "LS0tCjpzb21lOiBjb250cmFjdAo=", + "content": "LS0tCnNvbWU6IGNvbnRyYWN0Cg==", "contractType": "oas", "contentType": "application/yaml", "verificationResults": { diff --git a/spec/service_providers/pactflow_publish_provider_contract_spec.rb b/spec/service_providers/pactflow_publish_provider_contract_spec.rb index 35f8308..69add63 100644 --- a/spec/service_providers/pactflow_publish_provider_contract_spec.rb +++ b/spec/service_providers/pactflow_publish_provider_contract_spec.rb @@ -37,7 +37,7 @@ let(:request_body) do { - "content" => "LS0tCjpzb21lOiBjb250cmFjdAo=", + "content" => "LS0tCnNvbWU6IGNvbnRyYWN0Cg==", "contractType" => "oas", "contentType" => "application/yaml", "verificationResults" => { From b3fd3cfa752374a3d776c0b1cbb239463458d5a6 Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Mon, 4 Sep 2023 11:28:43 +1000 Subject: [PATCH 3/5] chore: update url expectation for pf:ui when publishing provider contracts the old way Do not expect any particular format for the url - that is the provider's business, not the consumer's --- doc/pacts/markdown/Pact Broker Client - Pactflow.md | 2 +- spec/pacts/pact_broker_client-pactflow.json | 7 ++++++- .../pactflow_publish_provider_contract_spec.rb | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/doc/pacts/markdown/Pact Broker Client - Pactflow.md b/doc/pacts/markdown/Pact Broker Client - Pactflow.md index 7133e5e..491a95e 100644 --- a/doc/pacts/markdown/Pact Broker Client - Pactflow.md +++ b/doc/pacts/markdown/Pact Broker Client - Pactflow.md @@ -114,7 +114,7 @@ PactFlow will respond with: "body": { "_links": { "pf:ui": { - "href": "http://localhost:1235/contracts/bi-directional/provider/Bar/version/1/provider-contract" + "href": "some-url" } } } diff --git a/spec/pacts/pact_broker_client-pactflow.json b/spec/pacts/pact_broker_client-pactflow.json index 78a694b..bffebb2 100644 --- a/spec/pacts/pact_broker_client-pactflow.json +++ b/spec/pacts/pact_broker_client-pactflow.json @@ -68,9 +68,14 @@ "body": { "_links": { "pf:ui": { - "href": "http://localhost:1235/contracts/bi-directional/provider/Bar/version/1/provider-contract" + "href": "some-url" } } + }, + "matchingRules": { + "$.body._links.pf:ui.href": { + "match": "type" + } } } }, diff --git a/spec/service_providers/pactflow_publish_provider_contract_spec.rb b/spec/service_providers/pactflow_publish_provider_contract_spec.rb index 69add63..b15d875 100644 --- a/spec/service_providers/pactflow_publish_provider_contract_spec.rb +++ b/spec/service_providers/pactflow_publish_provider_contract_spec.rb @@ -98,7 +98,7 @@ headers: pact_broker_response_headers, body: { "_links": { "pf:ui": { - "href": "#{pactflow.mock_service_base_url}/contracts/bi-directional/provider/Bar/version/1/provider-contract" + "href": Pact.like("some-url") } } } } @@ -121,7 +121,7 @@ expect(subject.success).to be true expect(subject.message).to include "Successfully published provider contract for Bar version 1" expect(subject.message).to include "Next steps:" - expect(subject.message).to include success_response_with_pf_ui_url[:body][:_links][:'pf:ui'][:href] + expect(subject.message).to include "some-url" end end end \ No newline at end of file From 360688f95ae3804b38129a26814b21dae00907ed Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Mon, 4 Sep 2023 11:50:31 +1000 Subject: [PATCH 4/5] chore: publish pacts to pact-foundation.pactflow.io --- .github/workflows/test.yml | 4 +++- tasks/pact.rake | 37 +++++++++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 022bea1..6535afe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,10 +30,12 @@ jobs: with: ruby-version: "3.2" - run: "bundle install" + # Publish to old and new account until we can disable the old account - run: | rm -rf spec/pacts/* bundle exec rspec spec/service_providers/ - VERBOSE=true bundle exec rake pact:publish:pactflow + VERBOSE=true bundle exec rake pact:publish:pactflow_oss + VERBOSE=true bundle exec rake pact:publish:pactflow_pact_foundation env: PACT_BROKER_TOKEN: ${{ secrets.PACTFLOW_PACT_OSS_TOKEN }} PACT_BROKER_FEATURES: ${{ matrix.feature }} diff --git a/tasks/pact.rake b/tasks/pact.rake index 5c852b3..100bdd3 100644 --- a/tasks/pact.rake +++ b/tasks/pact.rake @@ -2,7 +2,7 @@ require "pact_broker/client/tasks" require "pact_broker/client/git" PactBroker::Client::PublicationTask.new(:localhost) do | task | - require 'pact_broker/client/version' + require "pact_broker/client/version" task.tag = `git rev-parse --abbrev-ref HEAD`.strip task.consumer_version = PactBroker::Client::VERSION task.pact_broker_base_url = "http://localhost:9292" @@ -11,17 +11,17 @@ PactBroker::Client::PublicationTask.new(:localhost) do | task | end PactBroker::Client::PublicationTask.new(:remote) do | task | - require 'pact_broker/client/version' + require "pact_broker/client/version" task.tag = `git rev-parse --abbrev-ref HEAD`.strip task.consumer_version = PactBroker::Client::VERSION task.pact_broker_base_url = "https://test.pact.dius.com.au" - task.pact_broker_basic_auth = { username: ENV.fetch('PACT_BROKER_USERNAME'), password: ENV.fetch('PACT_BROKER_PASSWORD') } + task.pact_broker_basic_auth = { username: ENV.fetch("PACT_BROKER_USERNAME"), password: ENV.fetch("PACT_BROKER_PASSWORD") } end -PactBroker::Client::PublicationTask.new(:pactflow) do | task | - version = ENV.fetch('GITHUB_SHA') - branch = ENV.fetch('GITHUB_REF').gsub("refs/heads/", "") - feature = ENV.fetch('TEST_FEATURE', '') +PactBroker::Client::PublicationTask.new(:pactflow_oss) do | task | + version = ENV.fetch("GITHUB_SHA") + branch = ENV.fetch("GITHUB_REF").gsub("refs/heads/", "") + feature = ENV.fetch("TEST_FEATURE", "") tag = branch if feature != '' @@ -29,7 +29,7 @@ PactBroker::Client::PublicationTask.new(:pactflow) do | task | tag = "#{tag}+#{feature}" end - require 'pact_broker/client/version' + require "pact_broker/client/version" task.auto_detect_version_properties = false task.tags = [tag] task.branch = nil @@ -38,3 +38,24 @@ PactBroker::Client::PublicationTask.new(:pactflow) do | task | task.pact_broker_token = ENV['PACT_BROKER_TOKEN'] task.build_url = PactBroker::Client::Git.build_url end + +PactBroker::Client::PublicationTask.new(:pactflow_pact_foundation) do | task | + version = ENV.fetch("GITHUB_SHA") + branch = ENV.fetch("GITHUB_REF").gsub("refs/heads/", "") + feature = ENV.fetch("TEST_FEATURE", "") + tag = branch + + if feature != "" + version = "#{version}+#{feature}" + tag = "#{tag}+#{feature}" + end + + require "pact_broker/client/version" + task.auto_detect_version_properties = false + task.tags = [tag] + task.branch = nil + task.consumer_version = version + task.pact_broker_base_url = "https://pact-foundation.pactflow.io" + task.pact_broker_token = ENV["PACT_BROKER_TOKEN_PACT_FOUNDATION"] + task.build_url = PactBroker::Client::Git.build_url +end From 4451e4fe9b85167f5c391e9fd0bf30085de3e69e Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Mon, 4 Sep 2023 11:52:47 +1000 Subject: [PATCH 5/5] chore: assign secret to env var --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6535afe..cf35d7e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,6 +38,7 @@ jobs: VERBOSE=true bundle exec rake pact:publish:pactflow_pact_foundation env: PACT_BROKER_TOKEN: ${{ secrets.PACTFLOW_PACT_OSS_TOKEN }} + PACT_BROKER_TOKEN_PACT_FOUNDATION: ${{ secrets.PACT_BROKER_TOKEN_PACT_FOUNDATION }} PACT_BROKER_FEATURES: ${{ matrix.feature }} TEST_FEATURE: ${{ matrix.feature }} can-i-deploy: