pact_broker 2.65.0 → 2.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/db/ddl_statements/latest_triggered_webhooks.rb +66 -0
  4. data/db/migrations/20180119_update_latest_triggered_webhooks.rb +5 -39
  5. data/db/migrations/20200930_update_latest_triggered_webhooks.rb +15 -0
  6. data/db/migrations/migration_helper.rb +10 -2
  7. data/lib/pact_broker/api/decorators/decorator_context.rb +2 -2
  8. data/lib/pact_broker/api/decorators/pagination_links.rb +34 -0
  9. data/lib/pact_broker/api/decorators/versions_decorator.rb +5 -1
  10. data/lib/pact_broker/api/pact_broker_urls.rb +8 -0
  11. data/lib/pact_broker/api/resources/index.rb +1 -1
  12. data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +11 -1
  13. data/lib/pact_broker/api/resources/versions.rb +12 -1
  14. data/lib/pact_broker/db/clean.rb +100 -43
  15. data/lib/pact_broker/doc/views/pacticipant/versions.markdown +9 -0
  16. data/lib/pact_broker/domain/pacticipant.rb +4 -0
  17. data/lib/pact_broker/domain/tag.rb +2 -0
  18. data/lib/pact_broker/domain/version.rb +1 -0
  19. data/lib/pact_broker/feature_toggle.rb +8 -4
  20. data/lib/pact_broker/matrix/service.rb +3 -0
  21. data/lib/pact_broker/pacticipants/repository.rb +6 -5
  22. data/lib/pact_broker/pacticipants/service.rb +5 -18
  23. data/lib/pact_broker/pacts/latest_tagged_pact_publications.rb +15 -1
  24. data/lib/pact_broker/tags/repository.rb +2 -5
  25. data/lib/pact_broker/test/test_data_builder.rb +22 -2
  26. data/lib/pact_broker/ui/views/matrix/show.haml +8 -0
  27. data/lib/pact_broker/version.rb +1 -1
  28. data/spec/features/get_versions_spec.rb +8 -0
  29. data/spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb +14 -9
  30. data/spec/lib/pact_broker/api/resources/default_base_resource_spec.rb +10 -4
  31. data/spec/lib/pact_broker/db/clean_spec.rb +72 -4
  32. data/spec/lib/pact_broker/feature_toggle_spec.rb +9 -1
  33. data/spec/lib/pact_broker/pacticipants/repository_spec.rb +8 -1
  34. data/spec/lib/pact_broker/pacts/latest_tagged_pact_publications_spec.rb +99 -0
  35. data/spec/lib/pact_broker/webhooks/repository_spec.rb +20 -0
  36. metadata +8 -2
@@ -7,7 +7,9 @@ module PactBroker
7
7
  allow(ENV).to receive(:[]).and_call_original
8
8
  end
9
9
 
10
- subject { FeatureToggle.enabled?(:foo) }
10
+ let(:ignore_env) { false }
11
+
12
+ subject { FeatureToggle.enabled?(:foo, ignore_env) }
11
13
 
12
14
  context "when RACK_ENV is not production" do
13
15
  before do
@@ -28,6 +30,12 @@ module PactBroker
28
30
  end
29
31
 
30
32
  it { is_expected.to be true }
33
+
34
+ context "when ignore env is set" do
35
+ let(:ignore_env) { true }
36
+
37
+ it { is_expected.to be false }
38
+ end
31
39
  end
32
40
  end
33
41
 
@@ -154,8 +154,15 @@ module PactBroker
154
154
  it "returns all the application versions for the given consumer" do
155
155
  expect(subject.collect(&:number)).to eq ["4.5.6", "1.2.3"]
156
156
  end
157
- end
158
157
 
158
+ context "with pagination options" do
159
+ subject { Repository.new.find_all_pacticipant_versions_in_reverse_order "Foo", page_number: 1, page_size: 1 }
160
+
161
+ it "paginates the query" do
162
+ expect(subject.collect(&:number)).to eq ["4.5.6"]
163
+ end
164
+ end
165
+ end
159
166
  end
160
167
  end
161
168
  end
@@ -0,0 +1,99 @@
1
+ require 'pact_broker/pacts/latest_tagged_pact_publications'
2
+
3
+ module PactBroker
4
+ module Pacts
5
+ describe LatestTaggedPactPublications do
6
+ subject { LatestTaggedPactPublications.for_selector(selector).order(:consumer_name, :consumer_version_order) }
7
+
8
+ context "for latest for a specified tag" do
9
+ before do
10
+ td.create_pact_with_hierarchy("Foo", "1", "Bar")
11
+ .create_consumer_version_tag("dev")
12
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
13
+ .create_consumer_version_tag("dev")
14
+ .create_pact_with_hierarchy("Foo", "3", "Bar")
15
+ .create_consumer_version_tag("prod")
16
+ end
17
+
18
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: "dev", latest: true) }
19
+
20
+ it "returns matching rows" do
21
+ expect(subject.count).to eq 1
22
+ expect(subject.first.consumer_version_number).to eq "2"
23
+ end
24
+ end
25
+
26
+ context "for latest for a specified tag and consumer" do
27
+ before do
28
+ td.create_pact_with_hierarchy("Foo", "1", "Bar")
29
+ .create_consumer_version_tag("dev")
30
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
31
+ .create_consumer_version_tag("dev")
32
+ .create_pact_with_hierarchy("Foo2", "3", "Bar")
33
+ .create_consumer_version_tag("dev")
34
+ end
35
+
36
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: "dev", latest: true, pacticipant_name: "Foo") }
37
+
38
+ it "returns matching rows" do
39
+ expect(subject.count).to eq 1
40
+ expect(subject.first.consumer_version_number).to eq "2"
41
+ end
42
+ end
43
+
44
+ context "for all for a specified tag" do
45
+ before do
46
+ td.create_pact_with_hierarchy("Foo", "1", "Bar")
47
+ .create_consumer_version_tag("dev")
48
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
49
+ .create_consumer_version_tag("dev")
50
+ .create_pact_with_hierarchy("Foo", "3", "Bar")
51
+ .create_consumer_version_tag("prod")
52
+ end
53
+
54
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: "dev") }
55
+
56
+ it "returns matching rows (which are only the latest)" do
57
+ expect(subject.count).to eq 1
58
+ expect(subject.first.consumer_version_number).to eq "2"
59
+ end
60
+ end
61
+
62
+ context "for latest for any tag" do
63
+ before do
64
+ td.create_pact_with_hierarchy("Foo", "1", "Bar")
65
+ .create_consumer_version_tag("dev")
66
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
67
+ .create_consumer_version_tag("dev")
68
+ .create_pact_with_hierarchy("Foo", "3", "Bar")
69
+ .create_consumer_version_tag("prod")
70
+ end
71
+
72
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: true, latest: true) }
73
+
74
+ it "returns matching rows" do
75
+ expect(subject.count).to eq 2
76
+ expect(subject.first.consumer_version_number).to eq "2"
77
+ end
78
+ end
79
+
80
+ context "for latest for any tag with a max age" do
81
+ before do
82
+ td.subtract_days(7)
83
+ .create_pact_with_hierarchy("Foo", "1", "Bar")
84
+ .create_consumer_version_tag("prod")
85
+ .add_days(4)
86
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
87
+ .create_consumer_version_tag("dev")
88
+ end
89
+
90
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: true, latest: true, max_age: 3) }
91
+
92
+ it "returns matching rows" do
93
+ expect(subject.count).to eq 1
94
+ expect(subject.first.consumer_version_number).to eq "2"
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -563,6 +563,26 @@ module PactBroker
563
563
  expect(subject.collect(&:trigger_uuid).sort).to eq ['332', '638']
564
564
  end
565
565
 
566
+ context "when a webhook has been triggered by different events" do
567
+ before do
568
+ td.create_pact_with_hierarchy("Foo2", "1.0.0", "Bar2")
569
+ .create_webhook
570
+ .create_triggered_webhook(trigger_uuid: '333', event_name: 'foo')
571
+ .create_triggered_webhook(trigger_uuid: '555', event_name: 'foo')
572
+ .create_webhook_execution
573
+ .create_triggered_webhook(trigger_uuid: '444', event_name: 'bar')
574
+ .create_triggered_webhook(trigger_uuid: '777', event_name: 'bar')
575
+ .create_webhook_execution
576
+ .create_triggered_webhook(trigger_uuid: '111', event_name: nil)
577
+ .create_triggered_webhook(trigger_uuid: '888', event_name: nil)
578
+ .create_webhook_execution
579
+ end
580
+
581
+ it "returns one for each event" do
582
+ expect(subject.collect(&:trigger_uuid).sort).to eq ['555', '777', '888']
583
+ end
584
+ end
585
+
566
586
  context "when there are two 'latest' triggered webhooks at the same time" do
567
587
  before do
568
588
  td.create_triggered_webhook(trigger_uuid: '888', created_at: DateTime.new(2018))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.65.0
4
+ version: 2.66.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-09-25 00:00:00.000000000 Z
13
+ date: 2020-10-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -402,6 +402,7 @@ files:
402
402
  - db/ddl_statements/latest_pact_consumer_version_orders.rb
403
403
  - db/ddl_statements/latest_pact_publications_by_consumer_versions.rb
404
404
  - db/ddl_statements/latest_tagged_pact_consumer_version_orders.rb
405
+ - db/ddl_statements/latest_triggered_webhooks.rb
405
406
  - db/ddl_statements/latest_verification_ids_for_consumer_version_tags.rb
406
407
  - db/ddl_statements/latest_verification_ids_for_pact_versions.rb
407
408
  - db/migrations/000001_create_pacticipant_table.rb
@@ -518,6 +519,7 @@ files:
518
519
  - db/migrations/20200318_add_created_at_to_latest_pact_publications.rb
519
520
  - db/migrations/20200319_add_created_at_to_latest_verifications.rb
520
521
  - db/migrations/20200922_add_event_to_triggered_webhook.rb
522
+ - db/migrations/20200930_update_latest_triggered_webhooks.rb
521
523
  - db/migrations/migration_helper.rb
522
524
  - db/test/backwards_compatibility/.rspec
523
525
  - db/test/backwards_compatibility/Appraisals
@@ -612,6 +614,7 @@ files:
612
614
  - lib/pact_broker/api/decorators/pact_webhooks_status_decorator.rb
613
615
  - lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb
614
616
  - lib/pact_broker/api/decorators/pacticipant_decorator.rb
617
+ - lib/pact_broker/api/decorators/pagination_links.rb
615
618
  - lib/pact_broker/api/decorators/provider_pacts_decorator.rb
616
619
  - lib/pact_broker/api/decorators/reason_decorator.rb
617
620
  - lib/pact_broker/api/decorators/relationships_csv_decorator.rb
@@ -764,6 +767,7 @@ files:
764
767
  - lib/pact_broker/doc/views/pact/tag-prod-version.markdown
765
768
  - lib/pact_broker/doc/views/pact/tag-version.markdown
766
769
  - lib/pact_broker/doc/views/pacticipant/can-i-deploy-badge.markdown
770
+ - lib/pact_broker/doc/views/pacticipant/versions.markdown
767
771
  - lib/pact_broker/doc/views/pending-provider-pacts.markdown
768
772
  - lib/pact_broker/doc/views/provider-pacts-for-verification.markdown
769
773
  - lib/pact_broker/doc/views/provider.markdown
@@ -1259,6 +1263,7 @@ files:
1259
1263
  - spec/lib/pact_broker/pacts/diff_spec.rb
1260
1264
  - spec/lib/pact_broker/pacts/generate_interaction_sha_spec.rb
1261
1265
  - spec/lib/pact_broker/pacts/generate_sha_spec.rb
1266
+ - spec/lib/pact_broker/pacts/latest_tagged_pact_publications_spec.rb
1262
1267
  - spec/lib/pact_broker/pacts/merger_spec.rb
1263
1268
  - spec/lib/pact_broker/pacts/pact_params_spec.rb
1264
1269
  - spec/lib/pact_broker/pacts/pact_publication_spec.rb
@@ -1649,6 +1654,7 @@ test_files:
1649
1654
  - spec/lib/pact_broker/pacts/diff_spec.rb
1650
1655
  - spec/lib/pact_broker/pacts/generate_interaction_sha_spec.rb
1651
1656
  - spec/lib/pact_broker/pacts/generate_sha_spec.rb
1657
+ - spec/lib/pact_broker/pacts/latest_tagged_pact_publications_spec.rb
1652
1658
  - spec/lib/pact_broker/pacts/merger_spec.rb
1653
1659
  - spec/lib/pact_broker/pacts/pact_params_spec.rb
1654
1660
  - spec/lib/pact_broker/pacts/pact_publication_spec.rb