pact_broker-client 1.14.1 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +21 -0
  4. data/README.md +27 -1
  5. data/Rakefile +9 -0
  6. data/doc/pacts/markdown/Pact Broker Client - Pact Broker.md +521 -10
  7. data/lib/pact_broker/client/base_client.rb +1 -1
  8. data/lib/pact_broker/client/cli/broker.rb +63 -0
  9. data/lib/pact_broker/client/cli/can_i_deploy_long_desc.txt +1 -1
  10. data/lib/pact_broker/client/cli/create_webhook_long_desc.txt +1 -0
  11. data/lib/pact_broker/client/command_result.rb +12 -0
  12. data/lib/pact_broker/client/hal.rb +4 -0
  13. data/lib/pact_broker/client/hal/entity.rb +78 -0
  14. data/lib/pact_broker/client/hal/entry_point.rb +13 -0
  15. data/lib/pact_broker/client/hal/http_client.rb +82 -0
  16. data/lib/pact_broker/client/hal/link.rb +79 -0
  17. data/lib/pact_broker/client/pacts.rb +7 -1
  18. data/lib/pact_broker/client/version.rb +1 -1
  19. data/lib/pact_broker/client/versions.rb +0 -1
  20. data/lib/pact_broker/client/webhooks/create.rb +114 -0
  21. data/spec/integration/can_i_deploy_spec.rb +1 -3
  22. data/spec/integration/create_version_tag_spec.rb +1 -3
  23. data/spec/lib/pact_broker/client/can_i_deploy_spec.rb +1 -1
  24. data/spec/lib/pact_broker/client/cli/broker_create_webhook_spec.rb +190 -0
  25. data/spec/lib/pact_broker/client/hal/entity_spec.rb +93 -0
  26. data/spec/lib/pact_broker/client/hal/http_client_spec.rb +105 -0
  27. data/spec/lib/pact_broker/client/hal/link_spec.rb +108 -0
  28. data/spec/lib/pact_broker/client/webhooks/create_spec.rb +61 -0
  29. data/spec/pacts/pact_broker_client-pact_broker.json +499 -9
  30. data/spec/service_providers/pact_broker_client_publish_spec.rb +6 -1
  31. data/spec/service_providers/pact_broker_client_retrieve_all_pacts_for_provider_spec.rb +1 -1
  32. data/spec/service_providers/{pact_broker_client_retrive_pact_spec.rb → pact_broker_client_retrieve_pact_spec.rb} +2 -3
  33. data/spec/service_providers/pact_broker_client_versions_spec.rb +1 -1
  34. data/spec/service_providers/pact_helper.rb +46 -0
  35. data/spec/service_providers/webhooks_create_spec.rb +255 -0
  36. data/spec/spec_helper.rb +32 -0
  37. data/spec/support/latest_pacts_for_provider.json +1 -1
  38. data/spec/support/shared_context.rb +6 -3
  39. metadata +24 -4
@@ -1,3 +1,6 @@
1
+ require 'pact_broker/client/pact_broker_client'
2
+ require_relative 'pact_helper'
3
+
1
4
  module PactBroker::Client
2
5
  describe PactBrokerClient, :pact => true do
3
6
 
@@ -116,7 +119,9 @@ module PactBroker::Client
116
119
  status: 500,
117
120
  headers: {'Content-Type' => Pact.term(generate: 'application/hal+json', matcher: %r{application/.*json})},
118
121
  body: {
119
- message: Pact::Term.new(matcher: /.*/, generate: 'An error occurred')
122
+ error: {
123
+ message: Pact::Term.new(matcher: /.*/, generate: 'An error occurred')
124
+ }
120
125
  }
121
126
  )
122
127
  end
@@ -7,7 +7,7 @@ module PactBroker::Client
7
7
  include_context "pact broker"
8
8
 
9
9
  describe "retriving all pacts for provider" do
10
- let(:response_body) { JSON.parse(File.read("./spec/support/latest_pacts_for_provider.json")) }
10
+ let(:response_body) { Pact.like(JSON.parse(File.read("./spec/support/latest_pacts_for_provider.json"))) }
11
11
  let(:expectedPactsArray) { [{:name => "Condor", :href => "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0"}] }
12
12
 
13
13
  context "when retrieving all the latest pacts for provider with prod tag specified" do
@@ -70,8 +70,7 @@ module PactBroker::Client
70
70
  headers: {}
71
71
  ).
72
72
  will_respond_with(
73
- status: 404,
74
- headers: pact_broker_response_headers
73
+ status: 404
75
74
  )
76
75
  end
77
76
  it "returns nil" do
@@ -89,7 +88,7 @@ module PactBroker::Client
89
88
  with(
90
89
  method: :get,
91
90
  path: '/pacts/provider/Pricing%20Service/consumer/Condor/latest/prod',
92
- headers: { 'Accept' => 'application/json, application/hal+json'}
91
+ headers: { 'Accept' => 'application/hal+json, application/json'}
93
92
  ).
94
93
  will_respond_with(
95
94
  status: 200,
@@ -6,7 +6,7 @@ describe PactBroker::Client::Versions, pact: true do
6
6
 
7
7
  include_context "pact broker"
8
8
 
9
- let(:get_headers) { { "Accept" => "application/json, application/hal+json" } }
9
+ let(:get_headers) { { "Accept" => "application/hal+json, application/json" } }
10
10
 
11
11
  describe "retrieving the latest pacticipant version" do
12
12
  let(:latest_version_path) { "/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-VERSION-{pacticipant}" }
@@ -18,3 +18,49 @@ Pact.service_consumer 'Pact Broker Client' do
18
18
 
19
19
  end
20
20
 
21
+ module PactBrokerPactHelperMethods
22
+
23
+ def placeholder_path(relation, params = [])
24
+ path = "/HAL-REL-PLACEHOLDER-#{relation.gsub(':', '-').upcase}"
25
+ if params.any?
26
+ joined_params = params.collect{ |param| "{#{param}}"}.join("-")
27
+ path = "#{path}-#{joined_params}"
28
+ end
29
+
30
+ path
31
+ end
32
+
33
+ def placeholder_url(relation, params = [])
34
+ "#{pact_broker.mock_service_base_url}#{placeholder_path(relation, params)}"
35
+ end
36
+
37
+ def placeholder_url_term(relation, params = [])
38
+ regexp = "http:\/\/.*"
39
+ if params.any?
40
+ joined_params_for_regexp = params.collect{ |param| "{#{param}}"}.join(".*")
41
+ regexp = "#{regexp}#{joined_params_for_regexp}"
42
+ end
43
+
44
+ Pact.term(placeholder_url(relation, params), /#{regexp}/)
45
+ end
46
+
47
+ def mock_pact_broker_index(context)
48
+ pact_broker
49
+ .upon_receiving("a request for the index resource")
50
+ .with(
51
+ method: :get,
52
+ path: '/',
53
+ headers: context.get_request_headers).
54
+ will_respond_with(
55
+ status: 200,
56
+ headers: context.pact_broker_response_headers,
57
+ body: {
58
+ _links: {
59
+ :'pb:webhooks' => {
60
+ href: placeholder_url_term('pb:webhooks')
61
+ }
62
+ }
63
+ }
64
+ )
65
+ end
66
+ end
@@ -0,0 +1,255 @@
1
+ require_relative 'pact_helper'
2
+ require 'pact_broker/client/webhooks/create'
3
+
4
+ RSpec.describe "creating a webhook", pact: true do
5
+
6
+ include_context "pact broker"
7
+ include PactBrokerPactHelperMethods
8
+
9
+ let(:params) do
10
+ {
11
+ http_method: "POST",
12
+ url: "https://webhook",
13
+ headers: { "Foo" => "bar", "Bar" => "foo"},
14
+ username: "username",
15
+ password: "password",
16
+ body: body,
17
+ consumer: "Condor",
18
+ provider: "Pricing Service",
19
+ events: ["contract_content_changed"]
20
+ }.tap { |it| Pact::Fixture.add_fixture(:create_webhook_params, it) }
21
+ end
22
+
23
+ let(:body) { { some: "body" }.to_json }
24
+
25
+ let(:request_body) do
26
+ {
27
+ "events" => [
28
+ {
29
+ "name" => "contract_content_changed"
30
+ }
31
+ ],
32
+ "request" => {
33
+ "url" => "https://webhook",
34
+ "method" => "POST",
35
+ "headers" => {
36
+ "Foo" => "bar",
37
+ "Bar" => "foo"
38
+ },
39
+ "body" => {
40
+ "some" => "body"
41
+ },
42
+ "username" => "username",
43
+ "password" => "password"
44
+ }
45
+ }
46
+ end
47
+
48
+ let(:success_response) do
49
+ {
50
+ status: 201,
51
+ headers: pact_broker_response_headers,
52
+ body: {
53
+ _links: {
54
+ self: {
55
+ href: Pact.term('http://localhost:1234/some-url', %r{http://.*}),
56
+ title: Pact.like("A title")
57
+ }
58
+ }
59
+ }
60
+ }
61
+ end
62
+
63
+ let(:pact_broker_client_options) { {} }
64
+
65
+ subject { PactBroker::Client::Webhooks::Create.call(params, broker_base_url, pact_broker_client_options) }
66
+
67
+ context "when a valid webhook with a JSON body is submitted" do
68
+ before do
69
+ pact_broker
70
+ .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
71
+ .upon_receiving("a request to create a webhook with a JSON body for a consumer and provider")
72
+ .with(
73
+ method: :post,
74
+ path: '/webhooks/provider/Pricing%20Service/consumer/Condor',
75
+ headers: post_request_headers,
76
+ body: request_body)
77
+ .will_respond_with(success_response)
78
+ end
79
+
80
+ it "returns a CommandResult with success = true" do
81
+ expect(subject).to be_a PactBroker::Client::CommandResult
82
+ expect(subject.success).to be true
83
+ expect(subject.message).to eq "Webhook \"A title\" created"
84
+ end
85
+ end
86
+
87
+ context "when a valid webhook with an XML body is submitted" do
88
+ before do
89
+ request_body["request"]["body"] = body
90
+
91
+ pact_broker
92
+ .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
93
+ .upon_receiving("a request to create a webhook with a non-JSON body for a consumer and provider")
94
+ .with(
95
+ method: :post,
96
+ path: '/webhooks/provider/Pricing%20Service/consumer/Condor',
97
+ headers: post_request_headers,
98
+ body: request_body)
99
+ .will_respond_with(success_response)
100
+ end
101
+
102
+ let(:body) { "<xml></xml>" }
103
+
104
+ it "returns a CommandResult with success = true" do
105
+ expect(subject.success).to be true
106
+ end
107
+ end
108
+
109
+ context "when an invalid webhook is submitted" do
110
+ before do
111
+ params[:url] = nil
112
+ request_body["request"]["url"] = nil
113
+
114
+ pact_broker
115
+ .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
116
+ .upon_receiving("an invalid request to create a webhook for a consumer and provider")
117
+ .with(
118
+ method: :post,
119
+ path: '/webhooks/provider/Pricing%20Service/consumer/Condor',
120
+ headers: post_request_headers,
121
+ body: request_body).
122
+ will_respond_with(
123
+ status: 400,
124
+ headers: pact_broker_response_headers,
125
+ body: {
126
+ errors: {
127
+ "request.url" => Pact.each_like("Some error")
128
+ }
129
+ }
130
+ )
131
+ end
132
+
133
+ it "returns a CommandResult with success = false" do
134
+ expect(subject.success).to be false
135
+ expect(subject.message).to match /400/
136
+ expect(subject.message).to match /Some error/
137
+ end
138
+ end
139
+
140
+ context "when one of the pacticipants does not exist" do
141
+ before do
142
+ pact_broker
143
+ .given("'Condor' does not exist in the pact-broker")
144
+ .upon_receiving("a request to create a webhook for a consumer and provider")
145
+ .with(
146
+ method: :post,
147
+ path: '/webhooks/provider/Pricing%20Service/consumer/Condor',
148
+ headers: post_request_headers,
149
+ body: request_body).
150
+ will_respond_with(
151
+ status: 404,
152
+ headers: pact_broker_response_headers
153
+ )
154
+ end
155
+
156
+ it "returns a CommandResult with success = false" do
157
+ expect(subject.success).to be false
158
+ expect(subject.message).to match /404/
159
+ end
160
+ end
161
+
162
+ context "when only a consumer is specified" do
163
+ before do
164
+ params.delete(:provider)
165
+ request_body["consumer"] = { "name" => "Condor" }
166
+ mock_pact_broker_index(self)
167
+
168
+ pact_broker
169
+ .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
170
+ .upon_receiving("a request to create a webhook with a JSON body for a consumer")
171
+ .with(
172
+ method: :post,
173
+ path: placeholder_path('pb:webhooks'),
174
+ headers: post_request_headers,
175
+ body: request_body)
176
+ .will_respond_with(success_response)
177
+ end
178
+
179
+ it "returns a CommandResult with success = true" do
180
+ expect(subject.success).to be true
181
+ expect(subject.message).to eq "Webhook \"A title\" created"
182
+ end
183
+ end
184
+
185
+ context "when only a consumer is specified and it does not exist" do
186
+ before do
187
+ params.delete(:provider)
188
+ request_body["consumer"] = { "name" => "Condor" }
189
+ mock_pact_broker_index(self)
190
+
191
+ pact_broker
192
+ .upon_receiving("a request to create a webhook with a JSON body for a consumer that does not exist")
193
+ .with(
194
+ method: :post,
195
+ path: placeholder_path('pb:webhooks'),
196
+ headers: post_request_headers,
197
+ body: request_body)
198
+ .will_respond_with(
199
+ status: 400,
200
+ headers: pact_broker_response_headers,
201
+ body: {
202
+ errors: {
203
+ "consumer.name" => Pact.each_like("Some error")
204
+ }
205
+ })
206
+ end
207
+
208
+ it "returns a CommandResult with success = true" do
209
+ expect(subject.success).to be false
210
+ end
211
+ end
212
+
213
+ context "when only a provider is specified" do
214
+ before do
215
+ params.delete(:consumer)
216
+ request_body["provider"] = { "name" => "Pricing Service" }
217
+ mock_pact_broker_index(self)
218
+
219
+ pact_broker
220
+ .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
221
+ .upon_receiving("a request to create a webhook with a JSON body for a provider")
222
+ .with(
223
+ method: :post,
224
+ path: placeholder_path('pb:webhooks'),
225
+ headers: post_request_headers,
226
+ body: request_body)
227
+ .will_respond_with(success_response)
228
+ end
229
+
230
+ it "returns a CommandResult with success = true" do
231
+ expect(subject.success).to be true
232
+ end
233
+ end
234
+
235
+ context "when neither consumer nor provider are specified" do
236
+ before do
237
+ params.delete(:consumer)
238
+ params.delete(:provider)
239
+ mock_pact_broker_index(self)
240
+
241
+ pact_broker
242
+ .upon_receiving("a request to create a global webhook with a JSON body")
243
+ .with(
244
+ method: :post,
245
+ path: placeholder_path('pb:webhooks'),
246
+ headers: post_request_headers,
247
+ body: request_body)
248
+ .will_respond_with(success_response)
249
+ end
250
+
251
+ it "returns a CommandResult with success = true" do
252
+ expect(subject.success).to be true
253
+ end
254
+ end
255
+ end
@@ -4,10 +4,42 @@ WebMock.disable_net_connect!(allow_localhost: true)
4
4
 
5
5
  require "./spec/support/shared_context.rb"
6
6
 
7
+ is_windows = (RbConfig::CONFIG['host_os'] =~ /bccwin|cygwin|djgpp|mingw|mswin|wince/i) != nil
8
+
7
9
  RSpec.configure do | config |
8
10
 
9
11
  config.before(:each) do
10
12
  ENV.delete('PACT_BROKER_BASE_URL')
13
+ ENV.delete('PACT_BROKER_USERNAME')
14
+ ENV.delete('PACT_BROKER_PASSWORD')
15
+ end
16
+
17
+ config.after(:all) do
18
+ Pact::Fixture.check_fixtures
11
19
  end
12
20
 
21
+ config.filter_run_excluding :skip_windows => is_windows
22
+ config.example_status_persistence_file_path = "./spec/examples.txt"
23
+ end
24
+
25
+ module Pact
26
+ module Fixture
27
+
28
+ def self.add_fixture key, value
29
+ fixtures[key] ||= []
30
+ fixtures[key] << value
31
+ end
32
+
33
+ def self.fixtures
34
+ @fixtures ||= {}
35
+ end
36
+
37
+ def self.check_fixtures
38
+ fixtures.each do | fixture_group |
39
+ if fixture_group.size > 1
40
+ #TODO compare fixtures to ensure they match
41
+ end
42
+ end
43
+ end
44
+ end
13
45
  end
@@ -4,7 +4,7 @@
4
4
  "href": "http://example.org/pacticipants/Pricing%20Service",
5
5
  "title": "Pricing Service"
6
6
  },
7
- "pacts": [
7
+ "pb:pacts": [
8
8
  {
9
9
  "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
10
10
  "title": "Pact between Condor (v1.3.0) and Pricing Service",
@@ -5,13 +5,16 @@ shared_context "pact broker" do
5
5
  let(:consumer_contract) { Pact::ConsumerContract.from_hash pact_hash }
6
6
  let(:pact_json) { pact_hash.to_json }
7
7
  let(:pact_broker_client) { PactBroker::Client::PactBrokerClient.new(client_config) }
8
- let(:client_config) { { base_url: 'http://localhost:1234' } }
8
+ let(:broker_base_url) { 'http://localhost:1234' }
9
+ let(:client_config) { { base_url: broker_base_url } }
9
10
  let(:consumer_version) { '1.3.0' }
10
11
  let(:version) { '1.3.0' }
11
12
  let(:pact_broker_version) { Pact::Term.new(:matcher => /\d+\.\d+\.\d+/, :generate => '1.0.0') }
12
- let(:pact_broker_response_headers) { {} }
13
+ let(:pact_broker_response_headers) { {'Content-Type' => 'application/hal+json;charset=utf-8'} }
13
14
  let(:default_request_headers) { { 'Content-Type' => 'application/json'} }
14
15
  let(:patch_request_headers) { { 'Content-Type' => 'application/json'} }
15
- let(:get_request_headers) { { 'Accept' => 'application/json'} }
16
+ let(:put_request_headers) { { 'Content-Type' => 'application/json', 'Accept' => 'application/hal+json'} }
17
+ let(:post_request_headers) { { 'Content-Type' => 'application/json', 'Accept' => 'application/hal+json'} }
18
+ let(:get_request_headers) { { 'Accept' => 'application/hal+json'} }
16
19
 
17
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.1
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Beth Skurrie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-11 00:00:00.000000000 Z
11
+ date: 2018-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -185,11 +185,18 @@ files:
185
185
  - lib/pact_broker/client/can_i_deploy.rb
186
186
  - lib/pact_broker/client/cli/broker.rb
187
187
  - lib/pact_broker/client/cli/can_i_deploy_long_desc.txt
188
+ - lib/pact_broker/client/cli/create_webhook_long_desc.txt
188
189
  - lib/pact_broker/client/cli/custom_thor.rb
189
190
  - lib/pact_broker/client/cli/version_selector_options_parser.rb
191
+ - lib/pact_broker/client/command_result.rb
190
192
  - lib/pact_broker/client/create_tag.rb
191
193
  - lib/pact_broker/client/error.rb
192
194
  - lib/pact_broker/client/git.rb
195
+ - lib/pact_broker/client/hal.rb
196
+ - lib/pact_broker/client/hal/entity.rb
197
+ - lib/pact_broker/client/hal/entry_point.rb
198
+ - lib/pact_broker/client/hal/http_client.rb
199
+ - lib/pact_broker/client/hal/link.rb
193
200
  - lib/pact_broker/client/matrix.rb
194
201
  - lib/pact_broker/client/matrix/formatter.rb
195
202
  - lib/pact_broker/client/matrix/json_formatter.rb
@@ -210,6 +217,7 @@ files:
210
217
  - lib/pact_broker/client/versions/formatter.rb
211
218
  - lib/pact_broker/client/versions/json_formatter.rb
212
219
  - lib/pact_broker/client/versions/text_formatter.rb
220
+ - lib/pact_broker/client/webhooks/create.rb
213
221
  - lib/pact_broker_client.rb
214
222
  - pact-broker-client.gemspec
215
223
  - script/generate-cli-usage.sh
@@ -220,9 +228,13 @@ files:
220
228
  - spec/lib/pact_broker/client/base_client_spec.rb
221
229
  - spec/lib/pact_broker/client/can_i_deploy_spec.rb
222
230
  - spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb
231
+ - spec/lib/pact_broker/client/cli/broker_create_webhook_spec.rb
223
232
  - spec/lib/pact_broker/client/cli/broker_publish_spec.rb
224
233
  - spec/lib/pact_broker/client/cli/custom_thor_spec.rb
225
234
  - spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb
235
+ - spec/lib/pact_broker/client/hal/entity_spec.rb
236
+ - spec/lib/pact_broker/client/hal/http_client_spec.rb
237
+ - spec/lib/pact_broker/client/hal/link_spec.rb
226
238
  - spec/lib/pact_broker/client/matrix/text_formatter_spec.rb
227
239
  - spec/lib/pact_broker/client/matrix_spec.rb
228
240
  - spec/lib/pact_broker/client/merge_pacts_spec.rb
@@ -232,6 +244,7 @@ files:
232
244
  - spec/lib/pact_broker/client/tasks/publication_task_spec.rb
233
245
  - spec/lib/pact_broker/client/versions/describe_spec.rb
234
246
  - spec/lib/pact_broker/client/versions_spec.rb
247
+ - spec/lib/pact_broker/client/webhooks/create_spec.rb
235
248
  - spec/pacts/pact_broker_client-pact_broker.json
236
249
  - spec/service_providers/extra_goodies_spec.rb
237
250
  - spec/service_providers/pact_broker_client_matrix_spec.rb
@@ -239,10 +252,11 @@ files:
239
252
  - spec/service_providers/pact_broker_client_publish_spec.rb
240
253
  - spec/service_providers/pact_broker_client_register_repository_spec.rb
241
254
  - spec/service_providers/pact_broker_client_retrieve_all_pacts_for_provider_spec.rb
242
- - spec/service_providers/pact_broker_client_retrive_pact_spec.rb
255
+ - spec/service_providers/pact_broker_client_retrieve_pact_spec.rb
243
256
  - spec/service_providers/pact_broker_client_tags_spec.rb
244
257
  - spec/service_providers/pact_broker_client_versions_spec.rb
245
258
  - spec/service_providers/pact_helper.rb
259
+ - spec/service_providers/webhooks_create_spec.rb
246
260
  - spec/spec_helper.rb
247
261
  - spec/support/cli_test_pacts/bar.json
248
262
  - spec/support/cli_test_pacts/foo.json
@@ -285,9 +299,13 @@ test_files:
285
299
  - spec/lib/pact_broker/client/base_client_spec.rb
286
300
  - spec/lib/pact_broker/client/can_i_deploy_spec.rb
287
301
  - spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb
302
+ - spec/lib/pact_broker/client/cli/broker_create_webhook_spec.rb
288
303
  - spec/lib/pact_broker/client/cli/broker_publish_spec.rb
289
304
  - spec/lib/pact_broker/client/cli/custom_thor_spec.rb
290
305
  - spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb
306
+ - spec/lib/pact_broker/client/hal/entity_spec.rb
307
+ - spec/lib/pact_broker/client/hal/http_client_spec.rb
308
+ - spec/lib/pact_broker/client/hal/link_spec.rb
291
309
  - spec/lib/pact_broker/client/matrix/text_formatter_spec.rb
292
310
  - spec/lib/pact_broker/client/matrix_spec.rb
293
311
  - spec/lib/pact_broker/client/merge_pacts_spec.rb
@@ -297,6 +315,7 @@ test_files:
297
315
  - spec/lib/pact_broker/client/tasks/publication_task_spec.rb
298
316
  - spec/lib/pact_broker/client/versions/describe_spec.rb
299
317
  - spec/lib/pact_broker/client/versions_spec.rb
318
+ - spec/lib/pact_broker/client/webhooks/create_spec.rb
300
319
  - spec/pacts/pact_broker_client-pact_broker.json
301
320
  - spec/service_providers/extra_goodies_spec.rb
302
321
  - spec/service_providers/pact_broker_client_matrix_spec.rb
@@ -304,10 +323,11 @@ test_files:
304
323
  - spec/service_providers/pact_broker_client_publish_spec.rb
305
324
  - spec/service_providers/pact_broker_client_register_repository_spec.rb
306
325
  - spec/service_providers/pact_broker_client_retrieve_all_pacts_for_provider_spec.rb
307
- - spec/service_providers/pact_broker_client_retrive_pact_spec.rb
326
+ - spec/service_providers/pact_broker_client_retrieve_pact_spec.rb
308
327
  - spec/service_providers/pact_broker_client_tags_spec.rb
309
328
  - spec/service_providers/pact_broker_client_versions_spec.rb
310
329
  - spec/service_providers/pact_helper.rb
330
+ - spec/service_providers/webhooks_create_spec.rb
311
331
  - spec/spec_helper.rb
312
332
  - spec/support/cli_test_pacts/bar.json
313
333
  - spec/support/cli_test_pacts/foo.json