pact_broker 2.27.6 → 2.29.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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -1
  3. data/.travis.yml +1 -2
  4. data/CHANGELOG.md +38 -0
  5. data/MATRIX.md +4 -0
  6. data/README.md +3 -2
  7. data/Rakefile +1 -2
  8. data/config/database.yml +5 -0
  9. data/lib/pact_broker/api/decorators/matrix_decorator.rb +7 -1
  10. data/lib/pact_broker/api/decorators/reason_decorator.rb +50 -0
  11. data/lib/pact_broker/api/resources/base_resource.rb +1 -1
  12. data/lib/pact_broker/api/resources/error_handler.rb +32 -9
  13. data/lib/pact_broker/app.rb +16 -1
  14. data/lib/pact_broker/domain/webhook_request.rb +1 -1
  15. data/lib/pact_broker/matrix/deployment_status_summary.rb +123 -44
  16. data/lib/pact_broker/matrix/head_row.rb +20 -0
  17. data/lib/pact_broker/matrix/integration.rb +49 -7
  18. data/lib/pact_broker/matrix/query_results.rb +3 -2
  19. data/lib/pact_broker/matrix/query_results_with_deployment_status_summary.rb +2 -2
  20. data/lib/pact_broker/matrix/reason.rb +74 -0
  21. data/lib/pact_broker/matrix/repository.rb +97 -61
  22. data/lib/pact_broker/matrix/resolved_selector.rb +126 -0
  23. data/lib/pact_broker/matrix/row.rb +8 -1
  24. data/lib/pact_broker/matrix/service.rb +2 -16
  25. data/lib/pact_broker/pacts/repository.rb +15 -5
  26. data/lib/pact_broker/repositories/helpers.rb +3 -2
  27. data/lib/pact_broker/ui/views/index/_navbar.haml +14 -0
  28. data/lib/pact_broker/ui/views/index/show-with-tags.haml +1 -12
  29. data/lib/pact_broker/ui/views/index/show.haml +1 -12
  30. data/lib/pact_broker/ui/views/layouts/main.haml +3 -0
  31. data/lib/pact_broker/version.rb +1 -1
  32. data/lib/pact_broker/webhooks/job.rb +11 -5
  33. data/lib/pact_broker/webhooks/service.rb +10 -2
  34. data/lib/pact_broker/webhooks/webhook.rb +4 -0
  35. data/lib/rack/pact_broker/database_transaction.rb +22 -0
  36. data/pact_broker.gemspec +25 -1
  37. data/script/restart.sh +18 -0
  38. data/script/watch.sh +7 -0
  39. data/spec/features/publish_verification_spec.rb +1 -1
  40. data/spec/integration/app_spec.rb +1 -1
  41. data/spec/integration/webhooks/certificate_spec.rb +10 -2
  42. data/spec/lib/pact_broker/api/decorators/matrix_decorator_spec.rb +2 -1
  43. data/spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb +59 -0
  44. data/spec/lib/pact_broker/api/resources/error_handler_spec.rb +84 -21
  45. data/spec/lib/pact_broker/app_spec.rb +22 -0
  46. data/spec/lib/pact_broker/domain/webhook_request_spec.rb +1 -1
  47. data/spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb +116 -28
  48. data/spec/lib/pact_broker/matrix/head_row_spec.rb +23 -0
  49. data/spec/lib/pact_broker/matrix/integration_spec.rb +242 -0
  50. data/spec/lib/pact_broker/matrix/repository_dependency_spec.rb +58 -0
  51. data/spec/lib/pact_broker/matrix/repository_spec.rb +40 -7
  52. data/spec/lib/pact_broker/matrix/service_spec.rb +0 -50
  53. data/spec/lib/pact_broker/pacts/repository_spec.rb +20 -4
  54. data/spec/lib/pact_broker/webhooks/job_spec.rb +9 -9
  55. data/spec/lib/pact_broker/webhooks/service_spec.rb +3 -3
  56. data/spec/lib/pact_broker/webhooks/webhook_spec.rb +39 -0
  57. data/spec/lib/rack/pact_broker/database_transaction_spec.rb +40 -0
  58. data/spec/service_consumers/pact_helper.rb +2 -0
  59. data/spec/spec_helper.rb +2 -3
  60. data/spec/support/jobs.rb +12 -0
  61. data/spec/support/migration_helpers.rb +1 -1
  62. data/spec/support/simplecov.rb +10 -0
  63. data/tasks/audit.rake +2 -0
  64. data/tasks/pact.rake +5 -1
  65. data/tasks/rspec.rake +14 -0
  66. metadata +50 -5
  67. data/db/pact_broker_database.sqlite3 +0 -0
  68. data/spec/lib/pact_broker/matrix/repository_find_integrations_spec.rb +0 -51
@@ -139,6 +139,7 @@ module PactBroker
139
139
  let(:existing_pact) do
140
140
  TestDataBuilder.new.create_pact_with_hierarchy("A Consumer", "1.2.3", "A Provider", original_json_content).and_return(:pact)
141
141
  end
142
+ let(:repository) { Repository.new }
142
143
 
143
144
  before do
144
145
  ::DB::PACT_BROKER_DB[:pact_publications]
@@ -155,10 +156,8 @@ module PactBroker
155
156
  let(:original_json_content) { {some: 'json'}.to_json }
156
157
  let(:json_content) { {some_other: 'json'}.to_json }
157
158
 
158
-
159
159
  context "when the attributes have changed" do
160
-
161
- subject { Repository.new.update existing_pact.id, json_content: json_content }
160
+ subject { repository.update existing_pact.id, json_content: json_content }
162
161
 
163
162
  it "creates a new PactVersion" do
164
163
  expect { subject }.to change{ PactBroker::Pacts::PactPublication.count }.by(1)
@@ -186,11 +185,27 @@ module PactBroker
186
185
  it "increments the revision_number by 1" do
187
186
  expect(subject.revision_number).to eq 2
188
187
  end
188
+
189
+ context "when there is a race condition" do
190
+ before do
191
+ allow(repository).to receive(:next_revision_number) { | existing_pact | existing_pact.revision_number }
192
+ end
193
+
194
+ it "updates the existing row - yes this is destructive, by MySQL not supporting inner queries stops us doing a SELECT revision_number + 1" do
195
+ # And if we're conflicting the time between the two publications is so small that nobody
196
+ # can have depended on the content of the first pact
197
+ expect { subject }.to_not change{ PactBroker::Pacts::PactPublication.count }
198
+ end
199
+
200
+ it "sets the content to the new content" do
201
+ expect(subject.json_content).to eq json_content
202
+ end
203
+ end
189
204
  end
190
205
 
191
206
  context "when the content has not changed" do
192
207
 
193
- subject { Repository.new.update existing_pact.id, json_content: original_json_content }
208
+ subject { repository.update existing_pact.id, json_content: original_json_content }
194
209
 
195
210
  it "does not create a new PactVersion" do
196
211
  expect { subject }.to_not change{ PactBroker::Pacts::PactPublication.count }
@@ -217,6 +232,7 @@ module PactBroker
217
232
  .create_consumer_version("1.2.3")
218
233
  .create_provider(provider_name)
219
234
  .create_pact
235
+ .create_webhook
220
236
  .revise_pact
221
237
  .create_consumer_version("2.3.4")
222
238
  .create_pact
@@ -3,7 +3,6 @@ require 'pact_broker/webhooks/job'
3
3
  module PactBroker
4
4
  module Webhooks
5
5
  describe Job do
6
-
7
6
  before do
8
7
  PactBroker.configuration.webhook_retry_schedule = [10, 60, 120, 300, 600, 1200]
9
8
  allow(PactBroker::Webhooks::Service).to receive(:execute_triggered_webhook_now).and_return(result)
@@ -16,8 +15,9 @@ module PactBroker
16
15
  let(:result) { instance_double("PactBroker::Domain::WebhookExecutionResult", success?: success)}
17
16
  let(:success) { true }
18
17
  let(:logger) { double('logger').as_null_object }
18
+ let(:database_connector) { ->(&block) { block.call } }
19
19
 
20
- subject { Job.new.perform(triggered_webhook: triggered_webhook) }
20
+ subject { Job.new.perform(triggered_webhook: triggered_webhook, database_connector: database_connector) }
21
21
 
22
22
  it "reloads the TriggeredWebhook object to make sure it has a fresh copy" do
23
23
  expect(PactBroker::Webhooks::TriggeredWebhook).to receive(:find).with(id: 1)
@@ -44,7 +44,7 @@ module PactBroker
44
44
  end
45
45
 
46
46
  it "reschedules the job in 10 seconds" do
47
- expect(Job).to receive(:perform_in).with(10, {triggered_webhook: triggered_webhook, error_count: 1})
47
+ expect(Job).to receive(:perform_in).with(10, {triggered_webhook: triggered_webhook, error_count: 1, database_connector: database_connector})
48
48
  subject
49
49
  end
50
50
 
@@ -59,7 +59,7 @@ module PactBroker
59
59
  let(:success) { false }
60
60
 
61
61
  it "reschedules the job in 10 seconds" do
62
- expect(Job).to receive(:perform_in).with(10, {triggered_webhook: triggered_webhook, error_count: 1})
62
+ expect(Job).to receive(:perform_in).with(10, {triggered_webhook: triggered_webhook, error_count: 1, database_connector: database_connector})
63
63
  subject
64
64
  end
65
65
 
@@ -84,10 +84,10 @@ module PactBroker
84
84
  allow(PactBroker::Webhooks::Service).to receive(:execute_triggered_webhook_now).and_raise("an error")
85
85
  end
86
86
 
87
- subject { Job.new.perform(triggered_webhook: triggered_webhook, error_count: 1) }
87
+ subject { Job.new.perform(triggered_webhook: triggered_webhook, error_count: 1, database_connector: database_connector) }
88
88
 
89
89
  it "reschedules the job in 60 seconds" do
90
- expect(Job).to receive(:perform_in).with(60, {triggered_webhook: triggered_webhook, error_count: 2})
90
+ expect(Job).to receive(:perform_in).with(60, {triggered_webhook: triggered_webhook, error_count: 2, database_connector: database_connector})
91
91
  subject
92
92
  end
93
93
 
@@ -101,7 +101,7 @@ module PactBroker
101
101
  context "when the job is not successful for the last time" do
102
102
  let(:success) { false }
103
103
 
104
- subject { Job.new.perform(triggered_webhook: triggered_webhook, error_count: 6) }
104
+ subject { Job.new.perform(triggered_webhook: triggered_webhook, error_count: 6, database_connector: database_connector) }
105
105
 
106
106
  it "executes the job with an log message indicating that the webhook has failed" do
107
107
  expect(PactBroker::Webhooks::Service).to receive(:execute_triggered_webhook_now)
@@ -118,8 +118,8 @@ module PactBroker
118
118
  end
119
119
 
120
120
  it "logs that it has failed" do
121
- allow(Job.logger).to receive(:error)
122
- expect(Job.logger).to receive(:error).with(/Failed to execute/)
121
+ allow(Job.logger).to receive(:info)
122
+ expect(Job.logger).to receive(:info).with(/Failed to execute/)
123
123
  subject
124
124
  end
125
125
 
@@ -76,7 +76,7 @@ module PactBroker
76
76
  end
77
77
  end
78
78
 
79
- context "when there is a scheduling error" do
79
+ context "when there is a scheduling error", job: true do
80
80
  before do
81
81
  allow(Job).to receive(:perform_in).and_raise("an error")
82
82
  end
@@ -166,7 +166,7 @@ module PactBroker
166
166
  end
167
167
  end
168
168
 
169
- describe ".execute_webhook_now integration test" do
169
+ describe ".execute_webhook_now integration test", job: true do
170
170
  let(:td) { TestDataBuilder.new }
171
171
 
172
172
  let!(:http_request) do
@@ -215,7 +215,7 @@ module PactBroker
215
215
  end
216
216
  end
217
217
 
218
- describe ".trigger_webhooks integration test" do
218
+ describe ".trigger_webhooks integration test", job: true do
219
219
  let!(:http_request) do
220
220
  stub_request(:get, "http://example.org").
221
221
  to_return(:status => 200)
@@ -0,0 +1,39 @@
1
+ require 'pact_broker/webhooks/webhook'
2
+
3
+ module PactBroker
4
+ module Webhooks
5
+ describe Webhook do
6
+
7
+ let(:td) { TestDataBuilder.new }
8
+
9
+ before do
10
+ td.create_consumer("Foo")
11
+ .create_provider("Bar")
12
+ .create_consumer_version
13
+ .create_pact
14
+ .create_global_webhook
15
+ .create_consumer_webhook
16
+ .create_provider_webhook
17
+ .create_provider("Wiffle")
18
+ .create_provider_webhook
19
+ end
20
+
21
+ let(:consumer) { PactBroker::Domain::Pacticipant.find(name: "Foo") }
22
+ let(:provider) { PactBroker::Domain::Pacticipant.find(name: "Bar") }
23
+ let(:pact) { double(consumer_id: consumer.id, provider_id: provider.id).as_null_object }
24
+
25
+ describe "#is_for?" do
26
+ let(:matching_webhook_uuids) { Webhooks::Repository.new.find_by_consumer_and_or_provider(consumer, provider).collect(&:uuid) }
27
+ let(:matching_webhooks) { Webhooks::Webhook.where(uuid: matching_webhook_uuids) }
28
+ let(:non_matching_webhooks) { Webhooks::Webhook.exclude(uuid: matching_webhook_uuids) }
29
+
30
+ it "matches the implementation of Webhook::Repository#find_by_consumer_and_or_provider" do
31
+ expect(matching_webhooks.count).to be > 0
32
+ expect(non_matching_webhooks.count).to be > 0
33
+ expect(matching_webhooks.all?{|w| w.is_for?(pact)}).to be true
34
+ expect(non_matching_webhooks.all?{|w| !w.is_for?(pact)}).to be true
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -50,6 +50,46 @@ module Rack
50
50
  expect { subject }.to change { ::PactBroker::Domain::Pacticipant.count }.by(1)
51
51
  end
52
52
  end
53
+
54
+ describe "setting the database connector" do
55
+ let(:api) { double('api', call: [200, {}, []]) }
56
+
57
+ it "sets a database connector for use in jobs scheduled by this request" do
58
+ expect(api).to receive(:call) do | env |
59
+ expect(Thread.current[:pact_broker_thread_data].database_connector).to_not be nil
60
+ [200, {}, []]
61
+ end
62
+
63
+ subject
64
+ end
65
+
66
+ it "clears it after the request" do
67
+ subject
68
+ expect(Thread.current[:pact_broker_thread_data].database_connector).to be nil
69
+ end
70
+
71
+ context "when other middleware sets the database connector" do
72
+ before do
73
+ Thread.current[:pact_broker_thread_data] = OpenStruct.new(database_connector: other_database_connector)
74
+ end
75
+
76
+ let(:other_database_connector) { ->(&block) { block.call } }
77
+
78
+ it "does not override it" do
79
+ expect(api).to receive(:call) do | env |
80
+ expect(Thread.current[:pact_broker_thread_data].database_connector).to eq other_database_connector
81
+ [200, {}, []]
82
+ end
83
+
84
+ subject
85
+ end
86
+
87
+ it "does not clear it after the request" do
88
+ subject
89
+ expect(Thread.current[:pact_broker_thread_data].database_connector).to_not be nil
90
+ end
91
+ end
92
+ end
53
93
  end
54
94
  end
55
95
  end
@@ -1,4 +1,6 @@
1
1
  $: << File.expand_path("../../../", __FILE__)
2
+
3
+ require 'spec/support/simplecov'
2
4
  require 'pact/provider/rspec'
3
5
  require 'db'
4
6
  require 'tasks/database'
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,7 @@
1
1
  $: << File.expand_path("../../", __FILE__)
2
2
 
3
3
  RACK_ENV = ENV['RACK_ENV'] = 'test'
4
-
5
- require 'simplecov'
6
- SimpleCov.start
4
+ require 'spec/support/simplecov'
7
5
 
8
6
  require 'support/logging'
9
7
  require 'support/database'
@@ -45,6 +43,7 @@ RSpec.configure do | config |
45
43
 
46
44
  config.include FixtureHelpers
47
45
  config.example_status_persistence_file_path = "./spec/examples.txt"
46
+ config.filter_run_excluding skip: true
48
47
 
49
48
  def app
50
49
  PactBroker::API
@@ -0,0 +1,12 @@
1
+ require 'ostruct'
2
+
3
+ RSpec.configure do | config |
4
+ config.before(:each, job: true) do
5
+ Thread.current[:pact_broker_thread_data] = OpenStruct.new
6
+ Thread.current[:pact_broker_thread_data].database_connector = -> (&block) { block.call }
7
+ end
8
+
9
+ config.after(:each, job: true) do
10
+ Thread.current[:pact_broker_thread_data] = nil
11
+ end
12
+ end
@@ -11,6 +11,6 @@ module MigrationHelpers
11
11
  end
12
12
 
13
13
  def database
14
- @database ||= DB.connection_for_env 'test'
14
+ @database ||= PactBroker::Database.database
15
15
  end
16
16
  end
@@ -0,0 +1,10 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.command_name ENV['SIMPLECOV_COMMAND_NAME'] if ENV['SIMPLECOV_COMMAND_NAME']
4
+ SimpleCov.start do
5
+ add_filter '/db/'
6
+ add_filter '/example/'
7
+ add_filter '/spec/'
8
+ add_filter '/tasks/'
9
+ add_filter '/script/'
10
+ end
data/tasks/audit.rake ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler/audit/task'
2
+ Bundler::Audit::Task.new
data/tasks/pact.rake CHANGED
@@ -4,8 +4,12 @@ Pact::VerificationTask.new(:dev) do | pact |
4
4
  pact.uri "../pact_broker-client/spec/pacts/pact_broker_client-pact_broker.json"
5
5
  end
6
6
 
7
+ task :set_simplecov_command_to_pact_verify do
8
+ ENV['SIMPLECOV_COMMAND_NAME'] = 'pact:verify'
9
+ end
10
+
7
11
  namespace :pact do
8
- task :prepare => ['db:set_test_env', 'db:prepare:test']
12
+ task :prepare => ['db:set_test_env', 'db:prepare:test', 'set_simplecov_command_to_pact_verify',]
9
13
  task :verify => :prepare
10
14
  task 'verify:at' => :prepare
11
15
  task 'verify:dev' => :prepare
data/tasks/rspec.rake CHANGED
@@ -1,6 +1,10 @@
1
1
  require 'rspec/core'
2
2
  require 'rspec/core/rake_task'
3
3
 
4
+ RSpec::Core::RakeTask.new('spec:focus') do |task|
5
+ task.rspec_opts = '--tag @focus'
6
+ end
7
+
4
8
  RSpec::Core::RakeTask.new('spec:quick') do |task|
5
9
  task.rspec_opts = '--tag ~@no_db_clean --tag ~@migration'
6
10
  end
@@ -9,4 +13,14 @@ RSpec::Core::RakeTask.new('spec:slow') do |task|
9
13
  task.rspec_opts = '--tag @no_db_clean --tag @migration'
10
14
  end
11
15
 
16
+ task :set_simplecov_command_to_spec_quick do
17
+ ENV['SIMPLECOV_COMMAND_NAME'] = 'spec:quick'
18
+ end
19
+
20
+ task :set_simplecov_command_to_spec_slow do
21
+ ENV['SIMPLECOV_COMMAND_NAME'] = 'spec:slow'
22
+ end
23
+
24
+ task 'spec:quick' => ['set_simplecov_command_to_spec_quick']
25
+ task 'spec:slow' => ['set_simplecov_command_to_spec_slow']
12
26
  task :spec => ['spec:quick', 'spec:slow']
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.27.6
4
+ version: 2.29.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: 2018-11-22 00:00:00.000000000 Z
13
+ date: 2019-03-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -274,6 +274,20 @@ dependencies:
274
274
  - - "~>"
275
275
  - !ruby/object:Gem::Version
276
276
  version: 0.10.3
277
+ - !ruby/object:Gem::Dependency
278
+ name: dry-logic
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - '='
282
+ - !ruby/object:Gem::Version
283
+ version: 0.4.2
284
+ type: :runtime
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - '='
289
+ - !ruby/object:Gem::Version
290
+ version: 0.4.2
277
291
  - !ruby/object:Gem::Dependency
278
292
  name: table_print
279
293
  requirement: !ruby/object:Gem::Requirement
@@ -526,6 +540,20 @@ dependencies:
526
540
  - - "~>"
527
541
  - !ruby/object:Gem::Version
528
542
  version: '1.3'
543
+ - !ruby/object:Gem::Dependency
544
+ name: faraday
545
+ requirement: !ruby/object:Gem::Requirement
546
+ requirements:
547
+ - - "~>"
548
+ - !ruby/object:Gem::Version
549
+ version: '0.15'
550
+ type: :development
551
+ prerelease: false
552
+ version_requirements: !ruby/object:Gem::Requirement
553
+ requirements:
554
+ - - "~>"
555
+ - !ruby/object:Gem::Version
556
+ version: '0.15'
529
557
  description: A server that stores and returns pact files generated by the pact gem.
530
558
  It enables head/prod cross testing of the consumer and provider projects.
531
559
  email:
@@ -553,6 +581,7 @@ files:
553
581
  - DEVELOPER_SETUP.md
554
582
  - Gemfile
555
583
  - LICENSE.txt
584
+ - MATRIX.md
556
585
  - README.md
557
586
  - RELEASING.md
558
587
  - Rakefile
@@ -661,7 +690,6 @@ files:
661
690
  - db/migrations/20180731_update_head_matrix.rb
662
691
  - db/migrations/20180828_create_latest_versions.rb
663
692
  - db/migrations/migration_helper.rb
664
- - db/pact_broker_database.sqlite3
665
693
  - db/test/backwards_compatibility/.rspec
666
694
  - db/test/backwards_compatibility/Appraisals
667
695
  - db/test/backwards_compatibility/Gemfile
@@ -744,6 +772,7 @@ files:
744
772
  - lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb
745
773
  - lib/pact_broker/api/decorators/pacticipant_decorator.rb
746
774
  - lib/pact_broker/api/decorators/provider_pacts_decorator.rb
775
+ - lib/pact_broker/api/decorators/reason_decorator.rb
747
776
  - lib/pact_broker/api/decorators/relationships_csv_decorator.rb
748
777
  - lib/pact_broker/api/decorators/representable_pact.rb
749
778
  - lib/pact_broker/api/decorators/tag_decorator.rb
@@ -894,7 +923,9 @@ files:
894
923
  - lib/pact_broker/matrix/parse_query.rb
895
924
  - lib/pact_broker/matrix/query_results.rb
896
925
  - lib/pact_broker/matrix/query_results_with_deployment_status_summary.rb
926
+ - lib/pact_broker/matrix/reason.rb
897
927
  - lib/pact_broker/matrix/repository.rb
928
+ - lib/pact_broker/matrix/resolved_selector.rb
898
929
  - lib/pact_broker/matrix/row.rb
899
930
  - lib/pact_broker/matrix/service.rb
900
931
  - lib/pact_broker/messages.rb
@@ -948,6 +979,7 @@ files:
948
979
  - lib/pact_broker/ui/view_models/matrix_tag.rb
949
980
  - lib/pact_broker/ui/views/clusters/show.haml
950
981
  - lib/pact_broker/ui/views/groups/show.html.erb
982
+ - lib/pact_broker/ui/views/index/_navbar.haml
951
983
  - lib/pact_broker/ui/views/index/show-with-tags.haml
952
984
  - lib/pact_broker/ui/views/index/show.haml
953
985
  - lib/pact_broker/ui/views/layouts/main.haml
@@ -1049,11 +1081,13 @@ files:
1049
1081
  - script/recreate-pg-db.sh
1050
1082
  - script/recreate-test-database.sh
1051
1083
  - script/release.sh
1084
+ - script/restart.sh
1052
1085
  - script/run-with-ssl.rb
1053
1086
  - script/seed-example-matrix.rb
1054
1087
  - script/seed-matrix.rb
1055
1088
  - script/seed.rb
1056
1089
  - script/update-hal-browser
1090
+ - script/watch.sh
1057
1091
  - script/webhook-server.ru
1058
1092
  - spec/features/base_equality_only_on_content_that_affects_verification_results_spec.rb
1059
1093
  - spec/features/create_pacticipant_spec.rb
@@ -1144,6 +1178,7 @@ files:
1144
1178
  - spec/lib/pact_broker/api/decorators/pacticipant_collection_decorator_spec.rb
1145
1179
  - spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb
1146
1180
  - spec/lib/pact_broker/api/decorators/provider_pacts_decorator_spec.rb
1181
+ - spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb
1147
1182
  - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
1148
1183
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
1149
1184
  - spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb
@@ -1219,8 +1254,9 @@ files:
1219
1254
  - spec/lib/pact_broker/matrix/aggregated_row_spec.rb
1220
1255
  - spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb
1221
1256
  - spec/lib/pact_broker/matrix/head_row_spec.rb
1257
+ - spec/lib/pact_broker/matrix/integration_spec.rb
1222
1258
  - spec/lib/pact_broker/matrix/parse_query_spec.rb
1223
- - spec/lib/pact_broker/matrix/repository_find_integrations_spec.rb
1259
+ - spec/lib/pact_broker/matrix/repository_dependency_spec.rb
1224
1260
  - spec/lib/pact_broker/matrix/repository_spec.rb
1225
1261
  - spec/lib/pact_broker/matrix/row_spec.rb
1226
1262
  - spec/lib/pact_broker/matrix/service_spec.rb
@@ -1265,6 +1301,7 @@ files:
1265
1301
  - spec/lib/pact_broker/webhooks/status_spec.rb
1266
1302
  - spec/lib/pact_broker/webhooks/triggered_webhook_spec.rb
1267
1303
  - spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb
1304
+ - spec/lib/pact_broker/webhooks/webhook_spec.rb
1268
1305
  - spec/lib/rack/hal_browser/redirect_spec.rb
1269
1306
  - spec/lib/rack/pact_broker/add_pact_broker_version_header_spec.rb
1270
1307
  - spec/lib/rack/pact_broker/database_transaction_spec.rb
@@ -1294,6 +1331,7 @@ files:
1294
1331
  - spec/support/generated_markdown.md
1295
1332
  - spec/support/interaction_view_model.json
1296
1333
  - spec/support/interaction_view_model_with_terms.json
1334
+ - spec/support/jobs.rb
1297
1335
  - spec/support/logging.rb
1298
1336
  - spec/support/markdown_pact.json
1299
1337
  - spec/support/markdown_pact_with_markdown_chars_in_names.json
@@ -1302,9 +1340,11 @@ files:
1302
1340
  - spec/support/rspec_matchers.rb
1303
1341
  - spec/support/shared_context.rb
1304
1342
  - spec/support/shared_examples_for_responses.rb
1343
+ - spec/support/simplecov.rb
1305
1344
  - spec/support/ssl_webhook_server.rb
1306
1345
  - spec/support/test_data_builder.rb
1307
1346
  - spec/support/warning_silencer.rb
1347
+ - tasks/audit.rake
1308
1348
  - tasks/database.rb
1309
1349
  - tasks/database/annotate.rb
1310
1350
  - tasks/database/table_dependency_calculator.rb
@@ -1466,6 +1506,7 @@ test_files:
1466
1506
  - spec/lib/pact_broker/api/decorators/pacticipant_collection_decorator_spec.rb
1467
1507
  - spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb
1468
1508
  - spec/lib/pact_broker/api/decorators/provider_pacts_decorator_spec.rb
1509
+ - spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb
1469
1510
  - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
1470
1511
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
1471
1512
  - spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb
@@ -1541,8 +1582,9 @@ test_files:
1541
1582
  - spec/lib/pact_broker/matrix/aggregated_row_spec.rb
1542
1583
  - spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb
1543
1584
  - spec/lib/pact_broker/matrix/head_row_spec.rb
1585
+ - spec/lib/pact_broker/matrix/integration_spec.rb
1544
1586
  - spec/lib/pact_broker/matrix/parse_query_spec.rb
1545
- - spec/lib/pact_broker/matrix/repository_find_integrations_spec.rb
1587
+ - spec/lib/pact_broker/matrix/repository_dependency_spec.rb
1546
1588
  - spec/lib/pact_broker/matrix/repository_spec.rb
1547
1589
  - spec/lib/pact_broker/matrix/row_spec.rb
1548
1590
  - spec/lib/pact_broker/matrix/service_spec.rb
@@ -1587,6 +1629,7 @@ test_files:
1587
1629
  - spec/lib/pact_broker/webhooks/status_spec.rb
1588
1630
  - spec/lib/pact_broker/webhooks/triggered_webhook_spec.rb
1589
1631
  - spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb
1632
+ - spec/lib/pact_broker/webhooks/webhook_spec.rb
1590
1633
  - spec/lib/rack/hal_browser/redirect_spec.rb
1591
1634
  - spec/lib/rack/pact_broker/add_pact_broker_version_header_spec.rb
1592
1635
  - spec/lib/rack/pact_broker/database_transaction_spec.rb
@@ -1616,6 +1659,7 @@ test_files:
1616
1659
  - spec/support/generated_markdown.md
1617
1660
  - spec/support/interaction_view_model.json
1618
1661
  - spec/support/interaction_view_model_with_terms.json
1662
+ - spec/support/jobs.rb
1619
1663
  - spec/support/logging.rb
1620
1664
  - spec/support/markdown_pact.json
1621
1665
  - spec/support/markdown_pact_with_markdown_chars_in_names.json
@@ -1624,6 +1668,7 @@ test_files:
1624
1668
  - spec/support/rspec_matchers.rb
1625
1669
  - spec/support/shared_context.rb
1626
1670
  - spec/support/shared_examples_for_responses.rb
1671
+ - spec/support/simplecov.rb
1627
1672
  - spec/support/ssl_webhook_server.rb
1628
1673
  - spec/support/test_data_builder.rb
1629
1674
  - spec/support/warning_silencer.rb