pact_broker 2.27.6 → 2.29.0

Sign up to get free protection for your applications and to get access to all the features.
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