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.
- checksums.yaml +4 -4
- data/.gitignore +4 -1
- data/.travis.yml +1 -2
- data/CHANGELOG.md +38 -0
- data/MATRIX.md +4 -0
- data/README.md +3 -2
- data/Rakefile +1 -2
- data/config/database.yml +5 -0
- data/lib/pact_broker/api/decorators/matrix_decorator.rb +7 -1
- data/lib/pact_broker/api/decorators/reason_decorator.rb +50 -0
- data/lib/pact_broker/api/resources/base_resource.rb +1 -1
- data/lib/pact_broker/api/resources/error_handler.rb +32 -9
- data/lib/pact_broker/app.rb +16 -1
- data/lib/pact_broker/domain/webhook_request.rb +1 -1
- data/lib/pact_broker/matrix/deployment_status_summary.rb +123 -44
- data/lib/pact_broker/matrix/head_row.rb +20 -0
- data/lib/pact_broker/matrix/integration.rb +49 -7
- data/lib/pact_broker/matrix/query_results.rb +3 -2
- data/lib/pact_broker/matrix/query_results_with_deployment_status_summary.rb +2 -2
- data/lib/pact_broker/matrix/reason.rb +74 -0
- data/lib/pact_broker/matrix/repository.rb +97 -61
- data/lib/pact_broker/matrix/resolved_selector.rb +126 -0
- data/lib/pact_broker/matrix/row.rb +8 -1
- data/lib/pact_broker/matrix/service.rb +2 -16
- data/lib/pact_broker/pacts/repository.rb +15 -5
- data/lib/pact_broker/repositories/helpers.rb +3 -2
- data/lib/pact_broker/ui/views/index/_navbar.haml +14 -0
- data/lib/pact_broker/ui/views/index/show-with-tags.haml +1 -12
- data/lib/pact_broker/ui/views/index/show.haml +1 -12
- data/lib/pact_broker/ui/views/layouts/main.haml +3 -0
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/job.rb +11 -5
- data/lib/pact_broker/webhooks/service.rb +10 -2
- data/lib/pact_broker/webhooks/webhook.rb +4 -0
- data/lib/rack/pact_broker/database_transaction.rb +22 -0
- data/pact_broker.gemspec +25 -1
- data/script/restart.sh +18 -0
- data/script/watch.sh +7 -0
- data/spec/features/publish_verification_spec.rb +1 -1
- data/spec/integration/app_spec.rb +1 -1
- data/spec/integration/webhooks/certificate_spec.rb +10 -2
- data/spec/lib/pact_broker/api/decorators/matrix_decorator_spec.rb +2 -1
- data/spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb +59 -0
- data/spec/lib/pact_broker/api/resources/error_handler_spec.rb +84 -21
- data/spec/lib/pact_broker/app_spec.rb +22 -0
- data/spec/lib/pact_broker/domain/webhook_request_spec.rb +1 -1
- data/spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb +116 -28
- data/spec/lib/pact_broker/matrix/head_row_spec.rb +23 -0
- data/spec/lib/pact_broker/matrix/integration_spec.rb +242 -0
- data/spec/lib/pact_broker/matrix/repository_dependency_spec.rb +58 -0
- data/spec/lib/pact_broker/matrix/repository_spec.rb +40 -7
- data/spec/lib/pact_broker/matrix/service_spec.rb +0 -50
- data/spec/lib/pact_broker/pacts/repository_spec.rb +20 -4
- data/spec/lib/pact_broker/webhooks/job_spec.rb +9 -9
- data/spec/lib/pact_broker/webhooks/service_spec.rb +3 -3
- data/spec/lib/pact_broker/webhooks/webhook_spec.rb +39 -0
- data/spec/lib/rack/pact_broker/database_transaction_spec.rb +40 -0
- data/spec/service_consumers/pact_helper.rb +2 -0
- data/spec/spec_helper.rb +2 -3
- data/spec/support/jobs.rb +12 -0
- data/spec/support/migration_helpers.rb +1 -1
- data/spec/support/simplecov.rb +10 -0
- data/tasks/audit.rake +2 -0
- data/tasks/pact.rake +5 -1
- data/tasks/rspec.rake +14 -0
- metadata +50 -5
- data/db/pact_broker_database.sqlite3 +0 -0
- 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 {
|
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(:
|
122
|
-
expect(Job.logger).to receive(:
|
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
|
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
|
data/tasks/audit.rake
ADDED
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.
|
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:
|
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/
|
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/
|
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
|