pact_broker 2.22.0 → 2.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -0
  4. data/db/migrations/20180611_make_webhook_pacticipant_ids_optional.rb +11 -0
  5. data/example/config.ru +2 -0
  6. data/lib/pact_broker/api.rb +9 -3
  7. data/lib/pact_broker/api/contracts/webhook_contract.rb +36 -0
  8. data/lib/pact_broker/api/decorators/pact_decorator.rb +22 -1
  9. data/lib/pact_broker/api/decorators/pact_webhooks_status_decorator.rb +1 -26
  10. data/lib/pact_broker/api/decorators/triggered_webhook_decorator.rb +33 -0
  11. data/lib/pact_broker/api/decorators/triggered_webhooks_decorator.rb +19 -0
  12. data/lib/pact_broker/api/decorators/verification_decorator.rb +6 -0
  13. data/lib/pact_broker/api/decorators/webhook_decorator.rb +32 -18
  14. data/lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb +27 -0
  15. data/lib/pact_broker/api/decorators/{webhook_request_decorator.rb → webhook_request_template_decorator.rb} +1 -1
  16. data/lib/pact_broker/api/pact_broker_urls.rb +21 -1
  17. data/lib/pact_broker/api/resources/all_webhooks.rb +82 -0
  18. data/lib/pact_broker/api/resources/base_resource.rb +18 -0
  19. data/lib/pact_broker/api/resources/error_handler.rb +5 -1
  20. data/lib/pact_broker/api/resources/pact_triggered_webhooks.rb +41 -0
  21. data/lib/pact_broker/api/resources/pact_webhooks.rb +2 -15
  22. data/lib/pact_broker/api/resources/pact_webhooks_status.rb +1 -1
  23. data/lib/pact_broker/api/resources/verification_triggered_webhooks.rb +45 -0
  24. data/lib/pact_broker/api/resources/webhook_execution.rb +1 -5
  25. data/lib/pact_broker/api/resources/webhooks.rb +69 -6
  26. data/lib/pact_broker/configuration.rb +5 -2
  27. data/lib/pact_broker/doc/controllers/app.rb +1 -2
  28. data/lib/pact_broker/doc/views/pact-webhooks.markdown +3 -0
  29. data/lib/pact_broker/doc/views/webhooks.markdown +53 -33
  30. data/lib/pact_broker/domain/pact.rb +4 -0
  31. data/lib/pact_broker/domain/webhook.rb +19 -3
  32. data/lib/pact_broker/domain/webhook_execution_result.rb +6 -1
  33. data/lib/pact_broker/domain/webhook_request.rb +87 -65
  34. data/lib/pact_broker/locale/en.yml +1 -0
  35. data/lib/pact_broker/matrix/repository.rb +3 -1
  36. data/lib/pact_broker/pacts/placeholder_pact.rb +17 -0
  37. data/lib/pact_broker/pacts/repository.rb +14 -0
  38. data/lib/pact_broker/pacts/service.rb +6 -2
  39. data/lib/pact_broker/ui/view_models/index_item.rb +1 -1
  40. data/lib/pact_broker/verifications/placeholder_verification.rb +23 -0
  41. data/lib/pact_broker/verifications/repository.rb +9 -0
  42. data/lib/pact_broker/verifications/service.rb +5 -1
  43. data/lib/pact_broker/version.rb +1 -1
  44. data/lib/pact_broker/webhooks/repository.rb +54 -4
  45. data/lib/pact_broker/webhooks/service.rb +37 -2
  46. data/lib/pact_broker/webhooks/webhook.rb +4 -3
  47. data/lib/pact_broker/webhooks/webhook_event.rb +8 -0
  48. data/lib/pact_broker/webhooks/webhook_request_template.rb +72 -0
  49. data/pact_broker.gemspec +1 -1
  50. data/script/seed.rb +32 -51
  51. data/spec/features/create_webhook_spec.rb +85 -36
  52. data/spec/features/execute_webhook_spec.rb +9 -18
  53. data/spec/features/get_triggered_webhooks_for_pact_spec.rb +20 -0
  54. data/spec/features/get_triggered_webhooks_for_verification_spec.rb +21 -0
  55. data/spec/fixtures/webhook_valid_with_pacticipants.json +23 -0
  56. data/spec/integration/webhooks/certificate_spec.rb +2 -2
  57. data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +98 -2
  58. data/spec/lib/pact_broker/api/decorators/triggered_webhook_decorator_spec.rb +64 -0
  59. data/spec/lib/pact_broker/api/decorators/triggered_webhooks_decorator_spec.rb +28 -0
  60. data/spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb +8 -0
  61. data/spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb +37 -1
  62. data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +34 -1
  63. data/spec/lib/pact_broker/api/decorators/{webhook_request_decorator_spec.rb → webhook_request_template_decorator_spec.rb} +7 -9
  64. data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +22 -0
  65. data/spec/lib/pact_broker/api/resources/{pact_webhooks_spec.rb → all_webhooks_spec.rb} +46 -80
  66. data/spec/lib/pact_broker/api/resources/error_handler_spec.rb +34 -0
  67. data/spec/lib/pact_broker/api/resources/pact_triggered_webhooks_spec.rb +54 -0
  68. data/spec/lib/pact_broker/api/resources/pacticipant_spec.rb +1 -6
  69. data/spec/lib/pact_broker/api/resources/tag_spec.rb +1 -6
  70. data/spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb +68 -0
  71. data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +2 -8
  72. data/spec/lib/pact_broker/api/resources/webhooks_spec.rb +216 -21
  73. data/spec/lib/pact_broker/configuration_spec.rb +30 -0
  74. data/spec/lib/pact_broker/domain/webhook_request_spec.rb +20 -64
  75. data/spec/lib/pact_broker/domain/webhook_spec.rb +40 -11
  76. data/spec/lib/pact_broker/matrix/repository_spec.rb +33 -0
  77. data/spec/lib/pact_broker/pacts/pact_version_spec.rb +1 -0
  78. data/spec/lib/pact_broker/pacts/repository_spec.rb +39 -1
  79. data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +1 -1
  80. data/spec/lib/pact_broker/verifications/repository_spec.rb +37 -0
  81. data/spec/lib/pact_broker/verifications/service_spec.rb +2 -2
  82. data/spec/lib/pact_broker/webhooks/render_spec.rb +15 -0
  83. data/spec/lib/pact_broker/webhooks/repository_spec.rb +149 -30
  84. data/spec/lib/pact_broker/webhooks/service_spec.rb +84 -7
  85. data/spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb +81 -0
  86. data/spec/service_consumers/pact_helper.rb +2 -0
  87. data/spec/service_consumers/provider_states_for_pact_broker_client.rb +8 -0
  88. data/spec/service_consumers/provider_states_for_pact_ruby.rb +132 -0
  89. data/spec/support/test_data_builder.rb +30 -7
  90. metadata +37 -9
@@ -0,0 +1,81 @@
1
+ require 'pact_broker/webhooks/webhook_request_template'
2
+
3
+ module PactBroker
4
+ module Webhooks
5
+ describe WebhookRequestTemplate do
6
+ let(:attributes) do
7
+ {
8
+ method: 'POST',
9
+ url: url,
10
+ username: "foo",
11
+ password: "bar",
12
+ uuid: "1234",
13
+ body: body
14
+ }
15
+ end
16
+
17
+ let(:new_attributes) do
18
+ {
19
+ method: 'POST',
20
+ url: built_url,
21
+ username: "foo",
22
+ password: "bar",
23
+ uuid: "1234",
24
+ body: built_body
25
+ }
26
+ end
27
+
28
+ let(:url) { "http://example.org/hook?foo=bar" }
29
+ let(:built_url) { "http://example.org/hook?foo=barBUILT" }
30
+ let(:body) { { foo: "bar" } }
31
+ let(:built_body) { '{"foo":"bar"}BUILT' }
32
+
33
+ describe "#build" do
34
+ before do
35
+ allow(PactBroker::Webhooks::Render).to receive(:call) do | content, pact, verification, &block |
36
+ content + "BUILT"
37
+ end
38
+ end
39
+
40
+ let(:pact) { double('pact') }
41
+ let(:verification) { double('verification') }
42
+
43
+ subject { WebhookRequestTemplate.new(attributes).build(pact: pact, verification: verification) }
44
+
45
+ it "renders the url template" do
46
+ expect(PactBroker::Webhooks::Render).to receive(:call).with(url, pact, verification) do | content, pact, verification, &block |
47
+ expect(content).to eq url
48
+ expect(pact).to be pact
49
+ expect(verification).to be verification
50
+ expect(block.call("foo bar")).to eq "foo+bar"
51
+ built_url
52
+ end
53
+ subject
54
+ end
55
+
56
+ context "when the body is a string" do
57
+ let(:body) { 'body' }
58
+
59
+ it "renders the body template with the String" do
60
+ expect(PactBroker::Webhooks::Render).to receive(:call).with('body', pact, verification)
61
+ subject
62
+ end
63
+ end
64
+
65
+ context "when the body is an object" do
66
+ let(:request_body_string) { '{"foo":"bar"}' }
67
+
68
+ it "renders the body template with JSON" do
69
+ expect(PactBroker::Webhooks::Render).to receive(:call).with(request_body_string, pact, verification)
70
+ subject
71
+ end
72
+ end
73
+
74
+ it "creates a new PactBroker::Domain::WebhookRequest" do
75
+ expect(PactBroker::Domain::WebhookRequest).to receive(:new).with(new_attributes)
76
+ subject
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -31,6 +31,8 @@ module Rack
31
31
  end
32
32
  end
33
33
 
34
+ Pact.configuration.logger.level = Logger::DEBUG
35
+
34
36
  Pact.service_provider "Pact Broker" do
35
37
 
36
38
  app { HalRelationProxyApp.new(app_to_verify) }
@@ -29,6 +29,14 @@ Pact.provider_states_for "Pact Broker Client" do
29
29
  end
30
30
  end
31
31
 
32
+ provider_state "the 'Pricing Service' and 'Condor' already exist in the pact-broker" do
33
+ set_up do
34
+ TestDataBuilder.new
35
+ .create_consumer("Condor")
36
+ .create_provider("Pricing Service")
37
+ end
38
+ end
39
+
32
40
  provider_state "the pact for Foo Thing version 1.2.3 has been verified by Bar version 4.5.6" do
33
41
  set_up do
34
42
  TestDataBuilder.new
@@ -0,0 +1,132 @@
1
+ require 'spec/support/test_data_builder'
2
+
3
+ Pact.provider_states_for "Pact Ruby" do
4
+
5
+ provider_state "the relations for retrieving pacts exist in the index resource" do
6
+ no_op
7
+ end
8
+
9
+ provider_state 'consumer-1 and consumer-2 have pacts with provider provider-1' do
10
+ set_up do
11
+ TestDataBuilder.new
12
+ .create_provider('provider-1')
13
+ .create_consumer('consumer-1')
14
+ .create_consumer_version('1.3.0')
15
+ .create_pact
16
+ .create_consumer('consumer-2')
17
+ .create_consumer_version('1.4.0')
18
+ .create_pact
19
+ end
20
+ end
21
+
22
+ provider_state 'consumer-1 and consumer-2 have pacts with provider provider-1 tagged with tag-1' do
23
+ set_up do
24
+ TestDataBuilder.new
25
+ .create_provider('provider-1')
26
+ .create_consumer('consumer-1')
27
+ .create_consumer_version('1.3.0')
28
+ .create_consumer_version_tag('tag-1')
29
+ .create_pact
30
+ .create_consumer("consumer-2")
31
+ .create_consumer_version('1.4.0')
32
+ .create_consumer_version_tag('tag-1')
33
+ .create_pact
34
+ end
35
+ end
36
+
37
+ provider_state 'consumer-1 and consumer-2 have pacts with provider provider-1 tagged with tag-2' do
38
+ set_up do
39
+ TestDataBuilder.new
40
+ .create_provider('provider-1')
41
+ .create_consumer('consumer-1')
42
+ .create_consumer_version('1.3.0')
43
+ .create_consumer_version_tag('tag-2')
44
+ .create_pact
45
+ .create_consumer('consumer-2')
46
+ .create_consumer_version('1.4.0')
47
+ .create_consumer_version_tag('tag-2')
48
+ .create_pact
49
+ end
50
+ end
51
+
52
+ provider_state 'consumer-1 and consumer-2 have 2 pacts with provider provider-1 tagged with tag-1' do
53
+ set_up do
54
+ TestDataBuilder.new
55
+ .create_provider('provider-1')
56
+ .create_consumer('consumer-1')
57
+ .create_consumer_version('1.3.0')
58
+ .create_consumer_version_tag('tag-1')
59
+ .create_pact
60
+ .create_consumer('consumer-2')
61
+ .create_consumer_version('1.4.0')
62
+ .create_consumer_version_tag('tag-1')
63
+ .create_pact
64
+ end
65
+ end
66
+
67
+ provider_state 'consumer-1 and consumer-2 have 2 pacts with provider provider-1 tagged with tag-2' do
68
+ set_up do
69
+ TestDataBuilder.new
70
+ .create_provider('provider-1')
71
+ .create_consumer('consumer-1')
72
+ .create_consumer_version('1.3.0')
73
+ .create_consumer_version_tag('tag-2')
74
+ .create_pact
75
+ .create_consumer('consumer-2')
76
+ .create_consumer_version('1.4.0')
77
+ .create_consumer_version_tag('tag-2')
78
+ .create_pact
79
+ end
80
+ end
81
+
82
+ provider_state 'consumer-1 and consumer-2 have 2 pacts with provider provider-1' do
83
+ set_up do
84
+ TestDataBuilder.new
85
+ .create_provider('provider-1')
86
+ .create_consumer('consumer-1')
87
+ .create_consumer_version('1.3.0')
88
+ .create_pact
89
+ .create_consumer('consumer-2')
90
+ .create_consumer_version('1.4.0')
91
+ .create_pact
92
+ end
93
+ end
94
+
95
+ provider_state "consumer-1 and consumer-2 have no pacts with provider provider-1 tagged with tag-1" do
96
+ set_up do
97
+ TestDataBuilder.new
98
+ .create_provider('provider-1')
99
+ .create_consumer('consumer-1')
100
+ .create_consumer_version('1.3.0')
101
+ .create_pact
102
+ .create_consumer('consumer-2')
103
+ .create_consumer_version('1.4.0')
104
+ .create_pact
105
+ end
106
+ end
107
+
108
+ provider_state "consumer-1 and consumer-2 have pacts with provider provider-1 tagged with master" do
109
+ set_up do
110
+ TestDataBuilder.new
111
+ .create_provider('provider-1')
112
+ .create_consumer('consumer-1')
113
+ .create_consumer_version('1.3.0')
114
+ .create_consumer_version_tag('master')
115
+ .create_pact
116
+ .create_consumer('consumer-2')
117
+ .create_consumer_version('1.4.0')
118
+ .create_consumer_version_tag('master')
119
+ .create_pact
120
+ end
121
+ end
122
+
123
+ provider_state "consumer-1 has no pacts with provider provider-1 tagged with tag-1" do
124
+ set_up do
125
+ TestDataBuilder.new
126
+ .create_provider('provider-1')
127
+ .create_consumer('consumer-1')
128
+ .create_consumer_version('1.3.0')
129
+ .create_pact
130
+ end
131
+ end
132
+ end
@@ -244,17 +244,39 @@ class TestDataBuilder
244
244
  self
245
245
  end
246
246
 
247
- def create_webhook params = {}
248
- params.delete(:comment)
247
+ def create_webhook parameters = {}
248
+ params = parameters.dup
249
+ consumer = params.key?(:consumer) ? params.delete(:consumer) : @consumer
250
+ provider = params.key?(:provider) ? params.delete(:provider) : @provider
249
251
  uuid = params[:uuid] || PactBroker::Webhooks::Service.next_uuid
250
- event_params = params[:events] || [{ name: PactBroker::Webhooks::WebhookEvent::DEFAULT_EVENT_NAME }]
252
+ event_params = if params[:event_names]
253
+ params[:event_names].collect{ |event_name| {name: event_name} }
254
+ else
255
+ params[:events] || [{ name: PactBroker::Webhooks::WebhookEvent::DEFAULT_EVENT_NAME }]
256
+ end
251
257
  events = event_params.collect{ |e| PactBroker::Webhooks::WebhookEvent.new(e) }
252
258
  default_params = { method: 'POST', url: 'http://example.org', headers: {'Content-Type' => 'application/json'}}
253
- request = PactBroker::Domain::WebhookRequest.new(default_params.merge(params))
254
- @webhook = PactBroker::Webhooks::Repository.new.create uuid, PactBroker::Domain::Webhook.new(request: request, events: events), @consumer, @provider
259
+ request = PactBroker::Webhooks::WebhookRequestTemplate.new(default_params.merge(params))
260
+ @webhook = PactBroker::Webhooks::Repository.new.create uuid, PactBroker::Domain::Webhook.new(request: request, events: events), consumer, provider
255
261
  self
256
262
  end
257
263
 
264
+ def create_verification_webhook parameters = {}
265
+ create_webhook(parameters.merge(event_names: PactBroker::Webhooks::WebhookEvent::VERIFICATION_PUBLISHED))
266
+ end
267
+
268
+ def create_global_webhook parameters = {}
269
+ create_webhook(parameters.merge(consumer: nil, provider: nil))
270
+ end
271
+
272
+ def create_provider_webhook parameters = {}
273
+ create_webhook(parameters.merge(consumer: nil))
274
+ end
275
+
276
+ def create_consumer_webhook parameters = {}
277
+ create_webhook(parameters.merge(provider: nil))
278
+ end
279
+
258
280
  def create_verification_webhook params = {}
259
281
  create_webhook params.merge(events: [{ name: PactBroker::Webhooks::WebhookEvent::VERIFICATION_PUBLISHED }])
260
282
  end
@@ -262,7 +284,8 @@ class TestDataBuilder
262
284
  def create_triggered_webhook params = {}
263
285
  params.delete(:comment)
264
286
  trigger_uuid = params[:trigger_uuid] || webhook_service.next_uuid
265
- @triggered_webhook = webhook_repository.create_triggered_webhook trigger_uuid, @webhook, @pact, nil, PactBroker::Webhooks::Service::RESOURCE_CREATION
287
+ verification = @webhook.trigger_on_provider_verification_published? ? @verification : nil
288
+ @triggered_webhook = webhook_repository.create_triggered_webhook trigger_uuid, @webhook, @pact, verification, PactBroker::Webhooks::Service::RESOURCE_CREATION
266
289
  @triggered_webhook.update(status: params[:status]) if params[:status]
267
290
  set_created_at_if_set params[:created_at], :triggered_webhooks, {id: @triggered_webhook.id}
268
291
  self
@@ -271,7 +294,7 @@ class TestDataBuilder
271
294
  def create_webhook_execution params = {}
272
295
  params.delete(:comment)
273
296
  logs = params[:logs] || "logs"
274
- webhook_execution_result = PactBroker::Domain::WebhookExecutionResult.new(OpenStruct.new(code: "200"), logs, nil)
297
+ webhook_execution_result = PactBroker::Domain::WebhookExecutionResult.new(nil, OpenStruct.new(code: "200"), logs, nil)
275
298
  @webhook_execution = PactBroker::Webhooks::Repository.new.create_execution @triggered_webhook, webhook_execution_result
276
299
  created_at = params[:created_at] || @pact.created_at + Rational(1, 86400)
277
300
  set_created_at_if_set created_at, :webhook_executions, {id: @webhook_execution.id}
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.22.0
4
+ version: 2.23.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-06-11 00:00:00.000000000 Z
13
+ date: 2018-06-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -204,14 +204,14 @@ dependencies:
204
204
  requirements:
205
205
  - - ">="
206
206
  - !ruby/object:Gem::Version
207
- version: 2.0.1
207
+ version: 2.0.2
208
208
  type: :runtime
209
209
  prerelease: false
210
210
  version_requirements: !ruby/object:Gem::Requirement
211
211
  requirements:
212
212
  - - ">="
213
213
  - !ruby/object:Gem::Version
214
- version: 2.0.1
214
+ version: 2.0.2
215
215
  - !ruby/object:Gem::Dependency
216
216
  name: haml
217
217
  requirement: !ruby/object:Gem::Requirement
@@ -618,6 +618,7 @@ files:
618
618
  - db/migrations/20180523_create_latest_verifications_for_consumer_version_tags.rb
619
619
  - db/migrations/20180524_create_latest_verifications_for_consumer_and_provider.rb
620
620
  - db/migrations/20180608_add_verification_to_triggered_webhook.rb
621
+ - db/migrations/20180611_make_webhook_pacticipant_ids_optional.rb
621
622
  - db/migrations/migration_helper.rb
622
623
  - db/pact_broker_database.sqlite3
623
624
  - db/test/backwards_compatibility/.rspec
@@ -706,17 +707,20 @@ files:
706
707
  - lib/pact_broker/api/decorators/representable_pact.rb
707
708
  - lib/pact_broker/api/decorators/tag_decorator.rb
708
709
  - lib/pact_broker/api/decorators/timestamps.rb
710
+ - lib/pact_broker/api/decorators/triggered_webhook_decorator.rb
711
+ - lib/pact_broker/api/decorators/triggered_webhooks_decorator.rb
709
712
  - lib/pact_broker/api/decorators/verification_decorator.rb
710
713
  - lib/pact_broker/api/decorators/verification_summary_decorator.rb
711
714
  - lib/pact_broker/api/decorators/version_decorator.rb
712
715
  - lib/pact_broker/api/decorators/versions_decorator.rb
713
716
  - lib/pact_broker/api/decorators/webhook_decorator.rb
714
717
  - lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb
715
- - lib/pact_broker/api/decorators/webhook_request_decorator.rb
718
+ - lib/pact_broker/api/decorators/webhook_request_template_decorator.rb
716
719
  - lib/pact_broker/api/decorators/webhooks_decorator.rb
717
720
  - lib/pact_broker/api/pact_broker_urls.rb
718
721
  - lib/pact_broker/api/renderers/html_pact_renderer.rb
719
722
  - lib/pact_broker/api/resources.rb
723
+ - lib/pact_broker/api/resources/all_webhooks.rb
720
724
  - lib/pact_broker/api/resources/authentication.rb
721
725
  - lib/pact_broker/api/resources/badge.rb
722
726
  - lib/pact_broker/api/resources/base_resource.rb
@@ -735,6 +739,7 @@ files:
735
739
  - lib/pact_broker/api/resources/matrix_for_consumer_and_provider.rb
736
740
  - lib/pact_broker/api/resources/pact.rb
737
741
  - lib/pact_broker/api/resources/pact_content_diff.rb
742
+ - lib/pact_broker/api/resources/pact_triggered_webhooks.rb
738
743
  - lib/pact_broker/api/resources/pact_version.rb
739
744
  - lib/pact_broker/api/resources/pact_versions.rb
740
745
  - lib/pact_broker/api/resources/pact_webhooks.rb
@@ -749,6 +754,7 @@ files:
749
754
  - lib/pact_broker/api/resources/tag.rb
750
755
  - lib/pact_broker/api/resources/triggered_webhook_logs.rb
751
756
  - lib/pact_broker/api/resources/verification.rb
757
+ - lib/pact_broker/api/resources/verification_triggered_webhooks.rb
752
758
  - lib/pact_broker/api/resources/verifications.rb
753
759
  - lib/pact_broker/api/resources/version.rb
754
760
  - lib/pact_broker/api/resources/versions.rb
@@ -786,6 +792,7 @@ files:
786
792
  - lib/pact_broker/doc/views/latest-verifications.markdown
787
793
  - lib/pact_broker/doc/views/layouts/main.haml
788
794
  - lib/pact_broker/doc/views/pact-versions.markdown
795
+ - lib/pact_broker/doc/views/pact-webhooks.markdown
789
796
  - lib/pact_broker/doc/views/pacticipants.markdown
790
797
  - lib/pact_broker/doc/views/provider.markdown
791
798
  - lib/pact_broker/doc/views/publish-pact.markdown
@@ -839,6 +846,7 @@ files:
839
846
  - lib/pact_broker/pacts/pact_publication.rb
840
847
  - lib/pact_broker/pacts/pact_version.rb
841
848
  - lib/pact_broker/pacts/parse.rb
849
+ - lib/pact_broker/pacts/placeholder_pact.rb
842
850
  - lib/pact_broker/pacts/repository.rb
843
851
  - lib/pact_broker/pacts/service.rb
844
852
  - lib/pact_broker/pacts/sort_content.rb
@@ -879,6 +887,7 @@ files:
879
887
  - lib/pact_broker/verifications/latest_verification_for_consumer_and_provider.rb
880
888
  - lib/pact_broker/verifications/latest_verification_for_consumer_version_tag.rb
881
889
  - lib/pact_broker/verifications/latest_verifications_by_consumer_version.rb
890
+ - lib/pact_broker/verifications/placeholder_verification.rb
882
891
  - lib/pact_broker/verifications/repository.rb
883
892
  - lib/pact_broker/verifications/sequence.rb
884
893
  - lib/pact_broker/verifications/service.rb
@@ -901,6 +910,7 @@ files:
901
910
  - lib/pact_broker/webhooks/triggered_webhook.rb
902
911
  - lib/pact_broker/webhooks/webhook.rb
903
912
  - lib/pact_broker/webhooks/webhook_event.rb
913
+ - lib/pact_broker/webhooks/webhook_request_template.rb
904
914
  - lib/rack/hal_browser.rb
905
915
  - lib/rack/hal_browser/redirect.rb
906
916
  - lib/rack/pact_broker/accepts_html_filter.rb
@@ -997,6 +1007,8 @@ files:
997
1007
  - spec/features/get_pacticipants_by_label_spec.rb
998
1008
  - spec/features/get_previous_distinct_version.rb
999
1009
  - spec/features/get_provider_pacts_spec.rb
1010
+ - spec/features/get_triggered_webhooks_for_pact_spec.rb
1011
+ - spec/features/get_triggered_webhooks_for_verification_spec.rb
1000
1012
  - spec/features/get_verifications_for_consumer_version_spec.rb
1001
1013
  - spec/features/get_version_spec.rb
1002
1014
  - spec/features/get_versions_spec.rb
@@ -1027,6 +1039,7 @@ files:
1027
1039
  - spec/fixtures/updated_pacticipant.json
1028
1040
  - spec/fixtures/verification.json
1029
1041
  - spec/fixtures/webhook_valid.json
1042
+ - spec/fixtures/webhook_valid_with_pacticipants.json
1030
1043
  - spec/integration/app_spec.rb
1031
1044
  - spec/integration/endpoints/group_spec.rb
1032
1045
  - spec/integration/ui/index_spec.rb
@@ -1055,16 +1068,19 @@ files:
1055
1068
  - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
1056
1069
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
1057
1070
  - spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb
1071
+ - spec/lib/pact_broker/api/decorators/triggered_webhook_decorator_spec.rb
1072
+ - spec/lib/pact_broker/api/decorators/triggered_webhooks_decorator_spec.rb
1058
1073
  - spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb
1059
1074
  - spec/lib/pact_broker/api/decorators/verification_summary_decorator_spec.rb
1060
1075
  - spec/lib/pact_broker/api/decorators/version_decorator_spec.rb
1061
1076
  - spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb
1062
1077
  - spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb
1063
1078
  - spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb
1064
- - spec/lib/pact_broker/api/decorators/webhook_request_decorator_spec.rb
1079
+ - spec/lib/pact_broker/api/decorators/webhook_request_template_decorator_spec.rb
1065
1080
  - spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb
1066
1081
  - spec/lib/pact_broker/api/pact_broker_urls_spec.rb
1067
1082
  - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
1083
+ - spec/lib/pact_broker/api/resources/all_webhooks_spec.rb
1068
1084
  - spec/lib/pact_broker/api/resources/badge_spec.rb
1069
1085
  - spec/lib/pact_broker/api/resources/base_resource_spec.rb
1070
1086
  - spec/lib/pact_broker/api/resources/dashboard_spec.rb
@@ -1076,12 +1092,13 @@ files:
1076
1092
  - spec/lib/pact_broker/api/resources/matrix_badge_spec.rb
1077
1093
  - spec/lib/pact_broker/api/resources/matrix_spec.rb
1078
1094
  - spec/lib/pact_broker/api/resources/pact_spec.rb
1079
- - spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb
1095
+ - spec/lib/pact_broker/api/resources/pact_triggered_webhooks_spec.rb
1080
1096
  - spec/lib/pact_broker/api/resources/pacticipant_spec.rb
1081
1097
  - spec/lib/pact_broker/api/resources/pacticipants_spec.rb
1082
1098
  - spec/lib/pact_broker/api/resources/provider_pacts_spec.rb
1083
1099
  - spec/lib/pact_broker/api/resources/tag_spec.rb
1084
1100
  - spec/lib/pact_broker/api/resources/triggered_webhook_logs_spec.rb
1101
+ - spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb
1085
1102
  - spec/lib/pact_broker/api/resources/verifications_spec.rb
1086
1103
  - spec/lib/pact_broker/api/resources/webhook_execution_spec.rb
1087
1104
  - spec/lib/pact_broker/api/resources/webhook_spec.rb
@@ -1157,6 +1174,7 @@ files:
1157
1174
  - spec/lib/pact_broker/webhooks/service_spec.rb
1158
1175
  - spec/lib/pact_broker/webhooks/status_spec.rb
1159
1176
  - spec/lib/pact_broker/webhooks/triggered_webhook_spec.rb
1177
+ - spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb
1160
1178
  - spec/lib/rack/hal_browser/redirect_spec.rb
1161
1179
  - spec/lib/rack/pact_broker/add_pact_broker_version_header_spec.rb
1162
1180
  - spec/lib/rack/pact_broker/database_transaction_spec.rb
@@ -1175,6 +1193,7 @@ files:
1175
1193
  - spec/service_consumers/hal_relation_proxy_app.rb
1176
1194
  - spec/service_consumers/pact_helper.rb
1177
1195
  - spec/service_consumers/provider_states_for_pact_broker_client.rb
1196
+ - spec/service_consumers/provider_states_for_pact_ruby.rb
1178
1197
  - spec/spec_helper.rb
1179
1198
  - spec/support/database_cleaner.rb
1180
1199
  - spec/support/fixture_helpers.rb
@@ -1289,6 +1308,8 @@ test_files:
1289
1308
  - spec/features/get_pacticipants_by_label_spec.rb
1290
1309
  - spec/features/get_previous_distinct_version.rb
1291
1310
  - spec/features/get_provider_pacts_spec.rb
1311
+ - spec/features/get_triggered_webhooks_for_pact_spec.rb
1312
+ - spec/features/get_triggered_webhooks_for_verification_spec.rb
1292
1313
  - spec/features/get_verifications_for_consumer_version_spec.rb
1293
1314
  - spec/features/get_version_spec.rb
1294
1315
  - spec/features/get_versions_spec.rb
@@ -1319,6 +1340,7 @@ test_files:
1319
1340
  - spec/fixtures/updated_pacticipant.json
1320
1341
  - spec/fixtures/verification.json
1321
1342
  - spec/fixtures/webhook_valid.json
1343
+ - spec/fixtures/webhook_valid_with_pacticipants.json
1322
1344
  - spec/integration/app_spec.rb
1323
1345
  - spec/integration/endpoints/group_spec.rb
1324
1346
  - spec/integration/ui/index_spec.rb
@@ -1347,16 +1369,19 @@ test_files:
1347
1369
  - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
1348
1370
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
1349
1371
  - spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb
1372
+ - spec/lib/pact_broker/api/decorators/triggered_webhook_decorator_spec.rb
1373
+ - spec/lib/pact_broker/api/decorators/triggered_webhooks_decorator_spec.rb
1350
1374
  - spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb
1351
1375
  - spec/lib/pact_broker/api/decorators/verification_summary_decorator_spec.rb
1352
1376
  - spec/lib/pact_broker/api/decorators/version_decorator_spec.rb
1353
1377
  - spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb
1354
1378
  - spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb
1355
1379
  - spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb
1356
- - spec/lib/pact_broker/api/decorators/webhook_request_decorator_spec.rb
1380
+ - spec/lib/pact_broker/api/decorators/webhook_request_template_decorator_spec.rb
1357
1381
  - spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb
1358
1382
  - spec/lib/pact_broker/api/pact_broker_urls_spec.rb
1359
1383
  - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
1384
+ - spec/lib/pact_broker/api/resources/all_webhooks_spec.rb
1360
1385
  - spec/lib/pact_broker/api/resources/badge_spec.rb
1361
1386
  - spec/lib/pact_broker/api/resources/base_resource_spec.rb
1362
1387
  - spec/lib/pact_broker/api/resources/dashboard_spec.rb
@@ -1368,12 +1393,13 @@ test_files:
1368
1393
  - spec/lib/pact_broker/api/resources/matrix_badge_spec.rb
1369
1394
  - spec/lib/pact_broker/api/resources/matrix_spec.rb
1370
1395
  - spec/lib/pact_broker/api/resources/pact_spec.rb
1371
- - spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb
1396
+ - spec/lib/pact_broker/api/resources/pact_triggered_webhooks_spec.rb
1372
1397
  - spec/lib/pact_broker/api/resources/pacticipant_spec.rb
1373
1398
  - spec/lib/pact_broker/api/resources/pacticipants_spec.rb
1374
1399
  - spec/lib/pact_broker/api/resources/provider_pacts_spec.rb
1375
1400
  - spec/lib/pact_broker/api/resources/tag_spec.rb
1376
1401
  - spec/lib/pact_broker/api/resources/triggered_webhook_logs_spec.rb
1402
+ - spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb
1377
1403
  - spec/lib/pact_broker/api/resources/verifications_spec.rb
1378
1404
  - spec/lib/pact_broker/api/resources/webhook_execution_spec.rb
1379
1405
  - spec/lib/pact_broker/api/resources/webhook_spec.rb
@@ -1449,6 +1475,7 @@ test_files:
1449
1475
  - spec/lib/pact_broker/webhooks/service_spec.rb
1450
1476
  - spec/lib/pact_broker/webhooks/status_spec.rb
1451
1477
  - spec/lib/pact_broker/webhooks/triggered_webhook_spec.rb
1478
+ - spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb
1452
1479
  - spec/lib/rack/hal_browser/redirect_spec.rb
1453
1480
  - spec/lib/rack/pact_broker/add_pact_broker_version_header_spec.rb
1454
1481
  - spec/lib/rack/pact_broker/database_transaction_spec.rb
@@ -1467,6 +1494,7 @@ test_files:
1467
1494
  - spec/service_consumers/hal_relation_proxy_app.rb
1468
1495
  - spec/service_consumers/pact_helper.rb
1469
1496
  - spec/service_consumers/provider_states_for_pact_broker_client.rb
1497
+ - spec/service_consumers/provider_states_for_pact_ruby.rb
1470
1498
  - spec/spec_helper.rb
1471
1499
  - spec/support/database_cleaner.rb
1472
1500
  - spec/support/fixture_helpers.rb