pact_broker 2.84.0 → 2.85.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/db/migrations/20210913_add_pending_to_verifications.rb +7 -0
  4. data/lib/pact/doc/markdown/consumer_contract_renderer.rb +3 -3
  5. data/lib/pact_broker/api/decorators/reason_decorator.rb +2 -2
  6. data/lib/pact_broker/api/decorators/verification_summary_decorator.rb +1 -2
  7. data/lib/pact_broker/api/middleware/configuration.rb +33 -0
  8. data/lib/pact_broker/api/pact_broker_urls.rb +5 -1
  9. data/lib/pact_broker/api/renderers/html_pact_renderer.rb +15 -11
  10. data/lib/pact_broker/api/resources/pact_versions_for_branch.rb +40 -0
  11. data/lib/pact_broker/api/resources/verifications.rb +5 -1
  12. data/lib/pact_broker/api.rb +1 -0
  13. data/lib/pact_broker/app.rb +2 -0
  14. data/lib/pact_broker/badges/service.rb +3 -1
  15. data/lib/pact_broker/configuration.rb +33 -29
  16. data/lib/pact_broker/domain/verification.rb +9 -0
  17. data/lib/pact_broker/domain/webhook.rb +22 -10
  18. data/lib/pact_broker/domain/webhook_request.rb +2 -2
  19. data/lib/pact_broker/index/service.rb +73 -22
  20. data/lib/pact_broker/locale/en.yml +2 -0
  21. data/lib/pact_broker/pacts/metadata.rb +4 -2
  22. data/lib/pact_broker/pacts/pact_publication.rb +37 -0
  23. data/lib/pact_broker/pacts/pact_publication_dataset_module.rb +39 -0
  24. data/lib/pact_broker/pacts/repository.rb +2 -1
  25. data/lib/pact_broker/test/http_test_data_builder.rb +1 -1
  26. data/lib/pact_broker/test/test_data_builder.rb +5 -1
  27. data/lib/pact_broker/ui/app.rb +7 -1
  28. data/lib/pact_broker/ui/controllers/dashboard.rb +80 -0
  29. data/lib/pact_broker/ui/controllers/groups.rb +23 -8
  30. data/lib/pact_broker/ui/helpers/url_helper.rb +5 -1
  31. data/lib/pact_broker/ui/view_models/index_item.rb +49 -7
  32. data/lib/pact_broker/ui/view_models/matrix_branch.rb +1 -1
  33. data/lib/pact_broker/ui/view_models/matrix_tag.rb +0 -1
  34. data/lib/pact_broker/ui/views/dashboard/show.haml +195 -0
  35. data/lib/pact_broker/ui/views/groups/show.html.erb +60 -14
  36. data/lib/pact_broker/ui/views/index/_dashboard_navbar.haml +7 -0
  37. data/lib/pact_broker/ui/views/index/_navbar.haml +0 -7
  38. data/lib/pact_broker/ui/views/index/show-with-tags.haml +3 -1
  39. data/lib/pact_broker/ui/views/index/show.haml +35 -13
  40. data/lib/pact_broker/ui/views/matrix/show.haml +7 -3
  41. data/lib/pact_broker/verifications/pseudo_branch_status.rb +2 -0
  42. data/lib/pact_broker/verifications/service.rb +1 -0
  43. data/lib/pact_broker/version.rb +1 -1
  44. data/lib/pact_broker/webhooks/event_listener.rb +3 -3
  45. data/lib/pact_broker/webhooks/execution_configuration.rb +16 -0
  46. data/lib/pact_broker/webhooks/execution_configuration_creator.rb +3 -0
  47. data/lib/pact_broker/webhooks/job.rb +1 -1
  48. data/lib/pact_broker/webhooks/trigger_service.rb +2 -2
  49. data/lib/pact_broker/webhooks/webhook_execution_result.rb +3 -7
  50. data/lib/pact_broker/webhooks/webhook_request_logger.rb +4 -12
  51. data/lib/pact_broker/webhooks/webhook_request_template.rb +6 -8
  52. data/pact_broker.gemspec +4 -0
  53. data/public/javascripts/index.js +75 -68
  54. data/public/javascripts/pact.js +14 -14
  55. data/public/stylesheets/index.css +1 -2
  56. data/public/stylesheets/pact.css +11 -0
  57. data/script/data/auto-create-things-for-tags.rb +2 -0
  58. data/script/data/branches.rb +2 -2
  59. data/script/data/contract-published-requiring-verification.rb +1 -1
  60. data/script/data/environments.rb +0 -0
  61. data/script/data/pending.rb +26 -0
  62. data/script/data/tags.rb +35 -0
  63. data/script/data/webhook.rb +22 -0
  64. data/script/seed.rb +50 -89
  65. data/spec/features/delete_pact_versions_for_branch_spec.rb +34 -0
  66. data/spec/fixtures/approvals/modifiable_resources.approved.json +4 -0
  67. data/spec/integration/app_spec.rb +6 -6
  68. data/spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb +2 -2
  69. data/spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb +2 -2
  70. data/spec/lib/pact_broker/api/decorators/verification_summary_decorator_spec.rb +2 -0
  71. data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +1 -1
  72. data/spec/lib/pact_broker/api/middleware/configuration_spec.rb +43 -0
  73. data/spec/lib/pact_broker/api/resources/verifications_spec.rb +2 -3
  74. data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +1 -1
  75. data/spec/lib/pact_broker/badges/service_spec.rb +22 -0
  76. data/spec/lib/pact_broker/domain/webhook_request_spec.rb +2 -1
  77. data/spec/lib/pact_broker/domain/webhook_spec.rb +15 -5
  78. data/spec/lib/pact_broker/index/service_spec.rb +1 -5
  79. data/spec/lib/pact_broker/index/service_view_spec.rb +144 -0
  80. data/spec/lib/pact_broker/pacts/metadata_spec.rb +11 -2
  81. data/spec/lib/pact_broker/pacts/pact_publication_latest_verification_spec.rb +29 -0
  82. data/spec/lib/pact_broker/pacts/repository_spec.rb +15 -2
  83. data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +11 -8
  84. data/spec/lib/pact_broker/verifications/pseudo_branch_status_spec.rb +9 -1
  85. data/spec/lib/pact_broker/verifications/service_spec.rb +4 -2
  86. data/spec/lib/pact_broker/webhooks/job_spec.rb +4 -4
  87. data/spec/lib/pact_broker/webhooks/trigger_service_spec.rb +9 -5
  88. data/spec/lib/pact_broker/webhooks/webhook_request_logger_spec.rb +6 -12
  89. data/spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb +3 -2
  90. data/spec/support/generated_markdown.md +3 -3
  91. metadata +47 -4
  92. data/spec/lib/pact_broker/api/resources/webhook_execution_result_spec.rb +0 -56
@@ -415,7 +415,6 @@ module PactBroker
415
415
  end
416
416
 
417
417
  describe "#delete_all_pact_publications_between" do
418
-
419
418
  before do
420
419
  td.create_consumer(consumer_name)
421
420
  .create_consumer_version("1.2.3")
@@ -426,7 +425,7 @@ module PactBroker
426
425
  .create_webhook
427
426
  .create_triggered_webhook
428
427
  .create_webhook_execution
429
- .create_consumer_version("2.3.4")
428
+ .create_consumer_version("2.3.4", branch: "main")
430
429
  .create_consumer_version_tag("prod")
431
430
  .create_consumer_version_tag("branch")
432
431
  .create_pact
@@ -448,6 +447,20 @@ module PactBroker
448
447
  expect { subject }.to change { PactPublication.count }.by(-1)
449
448
  end
450
449
  end
450
+
451
+ context "with a branch" do
452
+ subject { Repository.new.delete_all_pact_publications_between(consumer_name, :and => provider_name, branch_name: "main") }
453
+
454
+ it "deletes the pacts between the specified consumer and provider with the given branch" do
455
+ expect { subject }.to change {
456
+ PactPublication
457
+ .for_consumer_name(consumer_name)
458
+ .for_provider_name(provider_name)
459
+ .for_branch_name("main")
460
+ .count
461
+ }.by(-1)
462
+ end
463
+ end
451
464
  end
452
465
 
453
466
  describe "#find_latest_pacts_for_provider" do
@@ -27,15 +27,18 @@ module PactBroker
27
27
  its(:latest_pact_url) { should eq "/pacts/provider/Provider%20Name/consumer/Consumer%20Name/latest" }
28
28
  its(:pact_url) { should eq "/pacts/provider/Provider%20Name/consumer/Consumer%20Name/version/1.2.3" }
29
29
  its(:pact_matrix_url) { should eq "/matrix/provider/Provider%20Name/consumer/Consumer%20Name" }
30
- its(:consumer_group_url) { should eq "/groups/Consumer%20Name" }
31
- its(:provider_group_url) { should eq "/groups/Provider%20Name" }
30
+ its(:consumer_group_url) { should eq "/pacticipants/Consumer%20Name" }
31
+ its(:provider_group_url) { should eq "/pacticipants/Provider%20Name" }
32
32
 
33
33
  describe "pseudo_branch_verification_status" do
34
34
  let(:domain_relationship) do
35
35
  instance_double("PactBroker::Domain::IndexItem",
36
36
  pseudo_branch_verification_status: pseudo_branch_verification_status,
37
37
  provider_name: "Foo",
38
- latest_verification_provider_version_number: "4.5.6")
38
+ latest_verification_provider_version_number: "4.5.6",
39
+ tag_names: [],
40
+ consumer_version_branches: []
41
+ )
39
42
  end
40
43
  let(:ever_verified) { true }
41
44
  let(:pact_changed) { false }
@@ -137,13 +140,13 @@ module PactBroker
137
140
  its(:provider_version_latest_tag_names) { is_expected.to eq ["dev", "prod"] }
138
141
  end
139
142
 
140
- describe "tagged_pacts" do
143
+ describe "pact_tags" do
141
144
  let(:tags) { ["master", "prod"] }
142
- its(:tagged_pacts) do
145
+ its(:pact_tags) do
143
146
  is_expected.to eq([
144
- { tag: "master", deletionUrl: "/pacts/provider/Provider%20Name/consumer/Consumer%20Name/tag/master" }.to_json,
145
- { tag: "prod", deletionUrl: "/pacts/provider/Provider%20Name/consumer/Consumer%20Name/tag/prod" }.to_json
146
- ])
147
+ { name: "master", deletionUrl: "/pacts/provider/Provider%20Name/consumer/Consumer%20Name/tag/master" },
148
+ { name: "prod", deletionUrl: "/pacts/provider/Provider%20Name/consumer/Consumer%20Name/tag/prod" }
149
+ ].to_json)
147
150
  end
148
151
  end
149
152
 
@@ -5,11 +5,12 @@ module PactBroker
5
5
  describe PseudoBranchStatus do
6
6
  describe "pseudo_branch_verification_status" do
7
7
 
8
- let(:latest_verification) { instance_double("PactBroker::Domain::Verification", pact_version_sha: latest_verification_pact_version_sha, success: success) }
8
+ let(:latest_verification) { instance_double("PactBroker::Domain::Verification", failed_and_pact_pending?: failed_and_pact_pending, pact_version_sha: latest_verification_pact_version_sha, success: success) }
9
9
  let(:latest_pact) { instance_double("PactBroker::Domain::Pact", pact_version_sha: pact_pact_version_sha) }
10
10
  let(:pact_pact_version_sha) { "1234" }
11
11
  let(:latest_verification_pact_version_sha) { "1234" }
12
12
  let(:success) { true }
13
+ let(:failed_and_pact_pending) { false }
13
14
 
14
15
  subject { PseudoBranchStatus.new(latest_pact, latest_verification) }
15
16
 
@@ -32,6 +33,13 @@ module PactBroker
32
33
  its(:to_sym) { is_expected.to eq :failed }
33
34
  end
34
35
 
36
+ context "when the pact has not changed since the last failed verification and the pact was pending" do
37
+ let(:success) { false }
38
+ let(:failed_and_pact_pending) { true }
39
+
40
+ its(:to_sym) { is_expected.to eq :failed_pending }
41
+ end
42
+
35
43
  context "when the pact has changed since the last successful verification" do
36
44
  let(:pact_pact_version_sha) { "4566" }
37
45
  its(:to_sym) { is_expected.to eq :stale }
@@ -21,7 +21,8 @@ module PactBroker
21
21
 
22
22
  let(:event_context) { { some: "data", consumer_version_selectors: [{ foo: "bar" }] } }
23
23
  let(:expected_event_context) { { some: "data", provider_version_tags: ["dev"] } }
24
- let(:params) { { "success" => success, "providerApplicationVersion" => "4.5.6", "wip" => true, "testResults" => { "some" => "results" }} }
24
+ let(:params) { { "success" => success, "providerApplicationVersion" => "4.5.6", "wip" => true, "pending" => is_pending, "testResults" => { "some" => "results" }} }
25
+ let(:is_pending) { true }
25
26
  let(:success) { true }
26
27
  let(:pact) do
27
28
  td.create_pact_with_hierarchy
@@ -33,13 +34,14 @@ module PactBroker
33
34
  let(:create_verification) { subject.create 3, params, selected_pacts, event_context }
34
35
 
35
36
  it "logs the creation" do
36
- expect(logger).to receive(:info).with(/.*verification.*3/, payload: {"providerApplicationVersion"=>"4.5.6", "success"=>true, "wip"=>true})
37
+ expect(logger).to receive(:info).with(/.*verification.*3/, payload: {"providerApplicationVersion"=>"4.5.6", "success"=>true, "wip"=>true, "pending" => is_pending})
37
38
  create_verification
38
39
  end
39
40
 
40
41
  it "sets the verification attributes" do
41
42
  verification = create_verification
42
43
  expect(verification.wip).to be true
44
+ expect(verification.pact_pending?).to eq is_pending
43
45
  expect(verification.success).to be true
44
46
  expect(verification.number).to eq 3
45
47
  expect(verification.test_results).to eq "some" => "results"
@@ -5,7 +5,6 @@ module PactBroker
5
5
  module Webhooks
6
6
  describe Job do
7
7
  before do
8
- PactBroker.configuration.webhook_retry_schedule = [10, 60, 120, 300, 600, 1200]
9
8
  allow(PactBroker::Webhooks::TriggerService).to receive(:execute_triggered_webhook_now).and_return(result)
10
9
  allow(PactBroker::Webhooks::Service).to receive(:update_triggered_webhook_status)
11
10
  allow(PactBroker::Webhooks::TriggeredWebhook).to receive(:find).and_return(triggered_webhook)
@@ -17,12 +16,15 @@ module PactBroker
17
16
  let(:base_url) { "http://broker" }
18
17
  let(:triggered_webhook) { instance_double("PactBroker::Webhooks::TriggeredWebhook", webhook_uuid: "1234", id: 1) }
19
18
  let(:result) { instance_double("PactBroker::Domain::WebhookExecutionResult", success?: success) }
20
- let(:webhook_execution_configuration) { instance_double(PactBroker::Webhooks::ExecutionConfiguration, to_hash: webhook_execution_configuration_hash) }
19
+ let(:webhook_execution_configuration) do
20
+ instance_double(PactBroker::Webhooks::ExecutionConfiguration, retry_schedule: retry_schedule, to_hash: webhook_execution_configuration_hash)
21
+ end
21
22
  let(:webhook_execution_configuration_hash) { { the: "options" } }
22
23
  let(:success) { true }
23
24
  let(:logger) { double("logger").as_null_object }
24
25
  let(:database_connector) { ->(&block) { block.call } }
25
26
  let(:webhook_context) { { the: "context" } }
27
+ let(:retry_schedule) { [10, 60, 120, 300, 600, 1200] }
26
28
  let(:job_params) do
27
29
  {
28
30
  triggered_webhook: triggered_webhook,
@@ -125,8 +127,6 @@ module PactBroker
125
127
  job_params[:error_count] = 1
126
128
  end
127
129
 
128
- # subject { Job.new.perform(triggered_webhook: triggered_webhook, error_count: 1, database_connector: database_connector, base_url: base_url) }
129
-
130
130
  it "reschedules the job in 60 seconds" do
131
131
  expect(Job).to receive(:perform_in).with(60, hash_including(error_count: 2))
132
132
  subject
@@ -340,6 +340,9 @@ module PactBroker
340
340
  let(:webhook_execution_configuration) do
341
341
  PactBroker::Webhooks::ExecutionConfiguration.new
342
342
  .with_webhook_context(base_url: "http://example.org")
343
+ .with_retry_schedule([10, 60, 120, 300, 600, 1200])
344
+ .with_http_success_codes([200])
345
+ .with_user_agent("Pact Broker")
343
346
  .with_show_response(true)
344
347
  end
345
348
  let(:event_context) { { some: "data", base_url: "http://example.org" }}
@@ -361,7 +364,7 @@ module PactBroker
361
364
  .and_return(:pact)
362
365
  end
363
366
 
364
- let(:triggered_webhooks) { PactBroker::Webhooks::TriggerService.create_triggered_webhooks_for_event(pact, td.verification, PactBroker::Webhooks::WebhookEvent::CONTRACT_CONTENT_CHANGED, event_context) }
367
+ let!(:triggered_webhooks) { PactBroker::Webhooks::TriggerService.create_triggered_webhooks_for_event(pact, td.verification, PactBroker::Webhooks::WebhookEvent::CONTRACT_CONTENT_CHANGED, event_context) }
365
368
 
366
369
  subject { PactBroker::Webhooks::TriggerService.schedule_webhooks(triggered_webhooks, options) }
367
370
 
@@ -375,10 +378,6 @@ module PactBroker
375
378
  subject
376
379
  end
377
380
 
378
- it "saves the triggered webhook" do
379
- expect { subject }.to change { PactBroker::Webhooks::TriggeredWebhook.count }.by(1)
380
- end
381
-
382
381
  it "saves the execution" do
383
382
  expect { subject }.to change { PactBroker::Webhooks::Execution.count }.by(1)
384
383
  end
@@ -387,6 +386,11 @@ module PactBroker
387
386
  subject
388
387
  expect(TriggeredWebhook.first.status).to eq TriggeredWebhook::STATUS_SUCCESS
389
388
  end
389
+
390
+ it "does not call the PactBroker.configuration as it will have been reset after the end of the request" do
391
+ expect(PactBroker).to_not receive(:configuration)
392
+ subject
393
+ end
390
394
  end
391
395
  end
392
396
  end
@@ -16,7 +16,7 @@ module PactBroker
16
16
 
17
17
  let(:logger) { double("logger").as_null_object }
18
18
  let(:uuid) { "uuid" }
19
- let(:options) { { failure_log_message: "oops", show_response: show_response } }
19
+ let(:options) { { failure_log_message: "oops", show_response: show_response, http_code_success: [200] } }
20
20
  let(:show_response) { true }
21
21
  let(:username) { nil }
22
22
  let(:password) { nil }
@@ -54,8 +54,9 @@ module PactBroker
54
54
  let(:webhook_context) { { consumer_version_number: "123", base_url: base_url } }
55
55
 
56
56
  let(:webhook_request_logger) { WebhookRequestLogger.new(options) }
57
+ let(:success) { true }
57
58
 
58
- subject(:logs) { webhook_request_logger.log(uuid, webhook_request, response, error, webhook_context) }
59
+ subject(:logs) { webhook_request_logger.log(uuid, webhook_request, response, success, error, webhook_context) }
59
60
 
60
61
  describe "application logs" do
61
62
  it "logs the request" do
@@ -129,16 +130,8 @@ module PactBroker
129
130
  end
130
131
  end
131
132
 
132
- context "when the response code '100' is not in 'webhook_http_code_success'" do
133
- let(:status) { 100 }
134
-
135
- it "not successful, code '100' not in 'webhook_http_code_success'" do
136
- expect(logs).to include "oops"
137
- end
138
- end
139
-
140
- context "when the response code is not successful" do
141
- let(:status) { 400 }
133
+ context "when the status is not successful" do
134
+ let(:success) { false }
142
135
 
143
136
  it "logs the failure_log_message" do
144
137
  expect(logs).to include "oops"
@@ -174,6 +167,7 @@ module PactBroker
174
167
  end
175
168
 
176
169
  let(:response) { nil }
170
+ let(:success) { false }
177
171
  let(:error) do
178
172
  err = WebhookTestError.new("blah")
179
173
  allow(err).to receive(:backtrace).and_return([])
@@ -23,7 +23,8 @@ module PactBroker
23
23
  password: "passwordBUILT",
24
24
  uuid: "1234",
25
25
  body: built_body,
26
- headers: {"headername" => "headervalueBUILT"}
26
+ headers: {"headername" => "headervalueBUILT"},
27
+ user_agent: "Pact Broker"
27
28
  }
28
29
  end
29
30
 
@@ -45,7 +46,7 @@ module PactBroker
45
46
 
46
47
  let(:params_hash) { double("params hash") }
47
48
 
48
- subject { WebhookRequestTemplate.new(attributes).build(params_hash) }
49
+ subject { WebhookRequestTemplate.new(attributes).build(params_hash, "Pact Broker") }
49
50
 
50
51
  it "renders the url template" do
51
52
  expect(PactBroker::Webhooks::Render).to receive(:call).with(url, params_hash) do | content, pact, verification, &block |
@@ -1,12 +1,12 @@
1
- ### A pact between Some Consumer and Some Provider
1
+ # A pact between Some Consumer and Some Provider
2
2
 
3
- #### Requests from Some Consumer to Some Provider
3
+ ### Requests from Some Consumer to Some Provider
4
4
 
5
5
  * [A request for alligators in Brüssel](#a_request_for_alligators_in_Brüssel_given_alligators_exist) given alligators exist
6
6
 
7
7
  * [A request for polar bears](#a_request_for_polar_bears)
8
8
 
9
- #### Interactions
9
+ ### Interactions
10
10
 
11
11
  <a name="a_request_for_alligators_in_Brüssel_given_alligators_exist"></a>
12
12
  Given **alligators exist**, upon receiving **a request for alligators in Brüssel** from Some Consumer, with
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.84.0
4
+ version: 2.85.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: 2021-09-10 00:00:00.000000000 Z
13
+ date: 2021-09-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -82,6 +82,20 @@ dependencies:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
84
  version: 0.10.5
85
+ - !ruby/object:Gem::Dependency
86
+ name: dry-configurable
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '='
90
+ - !ruby/object:Gem::Version
91
+ version: 0.12.1
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '='
97
+ - !ruby/object:Gem::Version
98
+ version: 0.12.1
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: sequel
87
101
  requirement: !ruby/object:Gem::Requirement
@@ -376,6 +390,20 @@ dependencies:
376
390
  - - "~>"
377
391
  - !ruby/object:Gem::Version
378
392
  version: '2.1'
393
+ - !ruby/object:Gem::Dependency
394
+ name: request_store
395
+ requirement: !ruby/object:Gem::Requirement
396
+ requirements:
397
+ - - "~>"
398
+ - !ruby/object:Gem::Version
399
+ version: '1.5'
400
+ type: :runtime
401
+ prerelease: false
402
+ version_requirements: !ruby/object:Gem::Requirement
403
+ requirements:
404
+ - - "~>"
405
+ - !ruby/object:Gem::Version
406
+ version: '1.5'
379
407
  description: A server that stores and returns pact files generated by the pact gem.
380
408
  It enables head/prod cross testing of the consumer and provider projects.
381
409
  email:
@@ -582,6 +610,7 @@ files:
582
610
  - db/migrations/20210818_add_consumer_version_selectors_to_verification.rb
583
611
  - db/migrations/20210831_add_index_to_pact_publications.rb
584
612
  - db/migrations/20210908_add_auto_created.rb
613
+ - db/migrations/20210913_add_pending_to_verifications.rb
585
614
  - db/migrations/migration_helper.rb
586
615
  - db/test/backwards_compatibility/.rspec
587
616
  - db/test/backwards_compatibility/Appraisals
@@ -719,6 +748,7 @@ files:
719
748
  - lib/pact_broker/api/decorators/webhook_request_template_decorator.rb
720
749
  - lib/pact_broker/api/decorators/webhooks_decorator.rb
721
750
  - lib/pact_broker/api/middleware/basic_auth.rb
751
+ - lib/pact_broker/api/middleware/configuration.rb
722
752
  - lib/pact_broker/api/pact_broker_urls.rb
723
753
  - lib/pact_broker/api/paths.rb
724
754
  - lib/pact_broker/api/renderers/html_pact_renderer.rb
@@ -768,6 +798,7 @@ files:
768
798
  - lib/pact_broker/api/resources/pact_triggered_webhooks.rb
769
799
  - lib/pact_broker/api/resources/pact_version.rb
770
800
  - lib/pact_broker/api/resources/pact_versions.rb
801
+ - lib/pact_broker/api/resources/pact_versions_for_branch.rb
771
802
  - lib/pact_broker/api/resources/pact_webhooks.rb
772
803
  - lib/pact_broker/api/resources/pact_webhooks_status.rb
773
804
  - lib/pact_broker/api/resources/pacticipant.rb
@@ -1025,6 +1056,7 @@ files:
1025
1056
  - lib/pact_broker/ui/controllers/base_controller.rb
1026
1057
  - lib/pact_broker/ui/controllers/can_i_deploy.rb
1027
1058
  - lib/pact_broker/ui/controllers/clusters.rb
1059
+ - lib/pact_broker/ui/controllers/dashboard.rb
1028
1060
  - lib/pact_broker/ui/controllers/error_test.rb
1029
1061
  - lib/pact_broker/ui/controllers/groups.rb
1030
1062
  - lib/pact_broker/ui/controllers/index.rb
@@ -1042,8 +1074,10 @@ files:
1042
1074
  - lib/pact_broker/ui/view_models/matrix_released_version.rb
1043
1075
  - lib/pact_broker/ui/view_models/matrix_tag.rb
1044
1076
  - lib/pact_broker/ui/views/clusters/show.haml
1077
+ - lib/pact_broker/ui/views/dashboard/show.haml
1045
1078
  - lib/pact_broker/ui/views/groups/show.html.erb
1046
1079
  - lib/pact_broker/ui/views/index/_css_and_js.haml
1080
+ - lib/pact_broker/ui/views/index/_dashboard_navbar.haml
1047
1081
  - lib/pact_broker/ui/views/index/_getting-started.haml
1048
1082
  - lib/pact_broker/ui/views/index/_navbar.haml
1049
1083
  - lib/pact_broker/ui/views/index/_pagination.haml
@@ -1212,6 +1246,9 @@ files:
1212
1246
  - script/data/environments.rb
1213
1247
  - script/data/expand-currently-deployed.rb
1214
1248
  - script/data/issue-494.rb
1249
+ - script/data/pending.rb
1250
+ - script/data/tags.rb
1251
+ - script/data/webhook.rb
1215
1252
  - script/db-spec.sh
1216
1253
  - script/demonstrate-version-branches.rb
1217
1254
  - script/dev/rubocop-modified-files.sh
@@ -1277,6 +1314,7 @@ files:
1277
1314
  - spec/features/delete_integration_spec.rb
1278
1315
  - spec/features/delete_label_spec.rb
1279
1316
  - spec/features/delete_pact_spec.rb
1317
+ - spec/features/delete_pact_versions_for_branch_spec.rb
1280
1318
  - spec/features/delete_pact_versions_spec.rb
1281
1319
  - spec/features/delete_tagged_pact_versions_spec.rb
1282
1320
  - spec/features/delete_verification_spec.rb
@@ -1433,6 +1471,7 @@ files:
1433
1471
  - spec/lib/pact_broker/api/decorators/webhook_request_template_decorator_spec.rb
1434
1472
  - spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb
1435
1473
  - spec/lib/pact_broker/api/middleware/basic_auth_spec.rb
1474
+ - spec/lib/pact_broker/api/middleware/configuration_spec.rb
1436
1475
  - spec/lib/pact_broker/api/pact_broker_urls_spec.rb
1437
1476
  - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
1438
1477
  - spec/lib/pact_broker/api/renderers/integrations_dot_renderer_spec.rb
@@ -1465,7 +1504,6 @@ files:
1465
1504
  - spec/lib/pact_broker/api/resources/verification_spec.rb
1466
1505
  - spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb
1467
1506
  - spec/lib/pact_broker/api/resources/verifications_spec.rb
1468
- - spec/lib/pact_broker/api/resources/webhook_execution_result_spec.rb
1469
1507
  - spec/lib/pact_broker/api/resources/webhook_execution_spec.rb
1470
1508
  - spec/lib/pact_broker/api/resources/webhook_spec.rb
1471
1509
  - spec/lib/pact_broker/app_basic_auth_spec.rb
@@ -1517,6 +1555,7 @@ files:
1517
1555
  - spec/lib/pact_broker/groups/service_spec.rb
1518
1556
  - spec/lib/pact_broker/hash_refinements_spec.rb
1519
1557
  - spec/lib/pact_broker/index/service_spec.rb
1558
+ - spec/lib/pact_broker/index/service_view_spec.rb
1520
1559
  - spec/lib/pact_broker/integrations/integration_spec.rb
1521
1560
  - spec/lib/pact_broker/integrations/service_spec.rb
1522
1561
  - spec/lib/pact_broker/labels/repository_spec.rb
@@ -1554,6 +1593,7 @@ files:
1554
1593
  - spec/lib/pact_broker/pacts/metadata_spec.rb
1555
1594
  - spec/lib/pact_broker/pacts/pact_params_spec.rb
1556
1595
  - spec/lib/pact_broker/pacts/pact_publication_dataset_module_spec.rb
1596
+ - spec/lib/pact_broker/pacts/pact_publication_latest_verification_spec.rb
1557
1597
  - spec/lib/pact_broker/pacts/pact_publication_selector_dataset_module_spec.rb
1558
1598
  - spec/lib/pact_broker/pacts/pact_publication_spec.rb
1559
1599
  - spec/lib/pact_broker/pacts/pact_version_spec.rb
@@ -1752,6 +1792,7 @@ test_files:
1752
1792
  - spec/features/delete_integration_spec.rb
1753
1793
  - spec/features/delete_label_spec.rb
1754
1794
  - spec/features/delete_pact_spec.rb
1795
+ - spec/features/delete_pact_versions_for_branch_spec.rb
1755
1796
  - spec/features/delete_pact_versions_spec.rb
1756
1797
  - spec/features/delete_tagged_pact_versions_spec.rb
1757
1798
  - spec/features/delete_verification_spec.rb
@@ -1908,6 +1949,7 @@ test_files:
1908
1949
  - spec/lib/pact_broker/api/decorators/webhook_request_template_decorator_spec.rb
1909
1950
  - spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb
1910
1951
  - spec/lib/pact_broker/api/middleware/basic_auth_spec.rb
1952
+ - spec/lib/pact_broker/api/middleware/configuration_spec.rb
1911
1953
  - spec/lib/pact_broker/api/pact_broker_urls_spec.rb
1912
1954
  - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
1913
1955
  - spec/lib/pact_broker/api/renderers/integrations_dot_renderer_spec.rb
@@ -1940,7 +1982,6 @@ test_files:
1940
1982
  - spec/lib/pact_broker/api/resources/verification_spec.rb
1941
1983
  - spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb
1942
1984
  - spec/lib/pact_broker/api/resources/verifications_spec.rb
1943
- - spec/lib/pact_broker/api/resources/webhook_execution_result_spec.rb
1944
1985
  - spec/lib/pact_broker/api/resources/webhook_execution_spec.rb
1945
1986
  - spec/lib/pact_broker/api/resources/webhook_spec.rb
1946
1987
  - spec/lib/pact_broker/app_basic_auth_spec.rb
@@ -1992,6 +2033,7 @@ test_files:
1992
2033
  - spec/lib/pact_broker/groups/service_spec.rb
1993
2034
  - spec/lib/pact_broker/hash_refinements_spec.rb
1994
2035
  - spec/lib/pact_broker/index/service_spec.rb
2036
+ - spec/lib/pact_broker/index/service_view_spec.rb
1995
2037
  - spec/lib/pact_broker/integrations/integration_spec.rb
1996
2038
  - spec/lib/pact_broker/integrations/service_spec.rb
1997
2039
  - spec/lib/pact_broker/labels/repository_spec.rb
@@ -2029,6 +2071,7 @@ test_files:
2029
2071
  - spec/lib/pact_broker/pacts/metadata_spec.rb
2030
2072
  - spec/lib/pact_broker/pacts/pact_params_spec.rb
2031
2073
  - spec/lib/pact_broker/pacts/pact_publication_dataset_module_spec.rb
2074
+ - spec/lib/pact_broker/pacts/pact_publication_latest_verification_spec.rb
2032
2075
  - spec/lib/pact_broker/pacts/pact_publication_selector_dataset_module_spec.rb
2033
2076
  - spec/lib/pact_broker/pacts/pact_publication_spec.rb
2034
2077
  - spec/lib/pact_broker/pacts/pact_version_spec.rb