Skip to content

Commit 13e7b64

Browse files
committed
fix(pacts for verification): ensure a separate pact URL is returned for each consumer when multiple consumers share the same pact json content
1 parent 439a36b commit 13e7b64

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

lib/pact_broker/pacts/repository.rb

+1-2
Original file line numberDiff line numberDiff line change
@@ -357,12 +357,11 @@ def find_for_verification(provider_name, consumer_version_selectors)
357357
selected_pacts = selected_pacts + find_pacts_for_fallback_tags(selected_pacts, provider_name, consumer_version_selectors)
358358

359359
selected_pacts
360-
.group_by(&:pact_version_sha)
360+
.group_by{ |p| [p.consumer_name, p.pact_version_sha] }
361361
.values
362362
.collect do | selected_pacts_for_pact_version_id |
363363
SelectedPact.merge(selected_pacts_for_pact_version_id)
364364
end
365-
366365
end
367366

368367
private

spec/lib/pact_broker/pacts/repository_find_for_verification_spec.rb

+18-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ module Pacts
66
let(:td) { TestDataBuilder.new }
77

88
describe "#find_for_verification" do
9-
109
def find_by_consumer_version_number(consumer_version_number)
1110
subject.find{ |pact| pact.consumer_version_number == consumer_version_number }
1211
end
@@ -189,6 +188,24 @@ def find_by_consumer_name_and_consumer_version_number(consumer_name, consumer_ve
189188
expect(find_by_consumer_version_number("foo-latest-dev-version").overall_latest?).to be true
190189
end
191190
end
191+
192+
context "when two consumers have exactly the same json content" do
193+
before do
194+
td.create_consumer
195+
.create_provider("Bar")
196+
.create_consumer_version
197+
.create_pact(json_content: { interactions: ['foo'] }.to_json )
198+
.create_consumer
199+
.create_consumer_version
200+
.create_pact(json_content: { interactions: ['foo'] }.to_json )
201+
end
202+
203+
let(:consumer_version_selectors) { Selectors.new }
204+
205+
it "returns a pact for each consumer" do
206+
expect(subject.size).to eq 2
207+
end
208+
end
192209
end
193210
end
194211
end

0 commit comments

Comments
 (0)