pact_broker-client 1.53.0 → 1.57.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/CHANGELOG.md +31 -0
  4. data/README.md +14 -2
  5. data/doc/pacts/markdown/Pact Broker Client - Pact Broker.md +222 -0
  6. data/lib/pact_broker/client/base_client.rb +7 -5
  7. data/lib/pact_broker/client/cli/matrix_commands.rb +3 -2
  8. data/lib/pact_broker/client/cli/pacticipant_commands.rb +2 -1
  9. data/lib/pact_broker/client/cli/version_selector_options_parser.rb +4 -0
  10. data/lib/pact_broker/client/cli/webhook_commands.rb +16 -1
  11. data/lib/pact_broker/client/deployments/record_release.rb +5 -1
  12. data/lib/pact_broker/client/deployments/record_undeployment.rb +1 -1
  13. data/lib/pact_broker/client/environments/environment_command.rb +7 -2
  14. data/lib/pact_broker/client/git.rb +15 -4
  15. data/lib/pact_broker/client/hal/entity.rb +2 -2
  16. data/lib/pact_broker/client/hal/http_client.rb +20 -1
  17. data/lib/pact_broker/client/hal/link.rb +7 -2
  18. data/lib/pact_broker/client/pacticipants/create.rb +2 -1
  19. data/lib/pact_broker/client/publish_pacts.rb +5 -1
  20. data/lib/pact_broker/client/version.rb +1 -1
  21. data/lib/pact_broker/client/webhooks/create.rb +4 -0
  22. data/script/can-i-deploy.sh +5 -0
  23. data/script/record-deployments-and-releases.sh +3 -3
  24. data/spec/lib/pact_broker/client/cli/broker_run_webhook_commands_spec.rb +55 -0
  25. data/spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb +6 -0
  26. data/spec/lib/pact_broker/client/deployments/record_deployment_spec.rb +12 -1
  27. data/spec/lib/pact_broker/client/deployments/record_undeployment_spec.rb +1 -1
  28. data/spec/lib/pact_broker/client/git_spec.rb +46 -0
  29. data/spec/lib/pact_broker/client/hal/link_spec.rb +15 -0
  30. data/spec/pacts/pact_broker_client-pact_broker.json +234 -0
  31. data/spec/service_providers/webhooks_create_spec.rb +58 -0
  32. data/tasks/pact.rake +3 -1
  33. metadata +4 -3
@@ -54,6 +54,14 @@ RSpec.describe "creating a webhook", pact: true do
54
54
  headers: pact_broker_response_headers,
55
55
  body: {
56
56
  description: Pact.like("a webhook"),
57
+ request: {
58
+ body: {
59
+ some: "body"
60
+ }
61
+ },
62
+ events: [
63
+ name: "contract_content_changed"
64
+ ],
57
65
  _links: {
58
66
  self: {
59
67
  href: Pact.term('http://localhost:1234/some-url', %r{http://.*}),
@@ -92,6 +100,7 @@ RSpec.describe "creating a webhook", pact: true do
92
100
  before do
93
101
  params.merge!(events: event_names)
94
102
  request_body.merge!("events" => event_names.map{ |event_name| { "name" => event_name } })
103
+ success_response[:body].merge!(events: event_names.map{ |event_name| { "name" => event_name } })
95
104
 
96
105
  pact_broker
97
106
  .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
@@ -112,6 +121,7 @@ RSpec.describe "creating a webhook", pact: true do
112
121
  context "when a valid webhook with an XML body is submitted" do
113
122
  before do
114
123
  request_body["request"]["body"] = body
124
+ success_response[:body][:request][:body] = body
115
125
 
116
126
  pact_broker
117
127
  .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
@@ -207,6 +217,30 @@ RSpec.describe "creating a webhook", pact: true do
207
217
  end
208
218
  end
209
219
 
220
+ context "when consumer is specified using a label" do
221
+ before do
222
+ params.delete(:consumer)
223
+ params.delete(:provider)
224
+ params.merge!(consumer_label: "consumer_label")
225
+ request_body["consumer"] = { "label" => "consumer_label" }
226
+ mock_pact_broker_index(self)
227
+
228
+ pact_broker
229
+ .upon_receiving("a request to create a webhook with a JSON body for a consumer specified by a label")
230
+ .with(
231
+ method: :post,
232
+ path: placeholder_path('pb:webhooks'),
233
+ headers: post_request_headers,
234
+ body: request_body)
235
+ .will_respond_with(success_response)
236
+ end
237
+
238
+ it "returns a CommandResult with success = true" do
239
+ expect(subject.success).to be true
240
+ expect(subject.message).to eq "Webhook \"a webhook\" created"
241
+ end
242
+ end
243
+
210
244
  context "when only a consumer is specified and it does not exist" do
211
245
  before do
212
246
  params.delete(:provider)
@@ -257,6 +291,30 @@ RSpec.describe "creating a webhook", pact: true do
257
291
  end
258
292
  end
259
293
 
294
+ context "when provider is specified using a label" do
295
+ before do
296
+ params.delete(:consumer)
297
+ params.delete(:provider)
298
+ params.merge!(provider_label: "provider_label")
299
+ request_body["provider"] = { "label" => "provider_label" }
300
+ mock_pact_broker_index(self)
301
+
302
+ pact_broker
303
+ .upon_receiving("a request to create a webhook with a JSON body for a provider specified by a label")
304
+ .with(
305
+ method: :post,
306
+ path: placeholder_path('pb:webhooks'),
307
+ headers: post_request_headers,
308
+ body: request_body)
309
+ .will_respond_with(success_response)
310
+ end
311
+
312
+ it "returns a CommandResult with success = true" do
313
+ expect(subject.success).to be true
314
+ expect(subject.message).to eq "Webhook \"a webhook\" created"
315
+ end
316
+ end
317
+
260
318
  context "when neither consumer nor provider are specified" do
261
319
  before do
262
320
  params.delete(:consumer)
data/tasks/pact.rake CHANGED
@@ -1,4 +1,5 @@
1
- require 'pact_broker/client/tasks'
1
+ require "pact_broker/client/tasks"
2
+ require "pact_broker/client/git"
2
3
 
3
4
  PactBroker::Client::PublicationTask.new(:localhost) do | task |
4
5
  require 'pact_broker/client/version'
@@ -35,4 +36,5 @@ PactBroker::Client::PublicationTask.new(:pactflow) do | task |
35
36
  task.consumer_version = version
36
37
  task.pact_broker_base_url = "https://pact-oss.pactflow.io"
37
38
  task.pact_broker_token = ENV['PACT_BROKER_TOKEN']
39
+ task.build_url = PactBroker::Client::Git.build_url
38
40
  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.53.0
4
+ version: 1.57.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: 2021-09-29 00:00:00.000000000 Z
11
+ date: 2021-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -319,6 +319,7 @@ files:
319
319
  - lib/pact_broker_client.rb
320
320
  - pact-broker-client.gemspec
321
321
  - script/approve-all.sh
322
+ - script/can-i-deploy.sh
322
323
  - script/create-pacticipant.sh
323
324
  - script/publish-pact.sh
324
325
  - script/record-deployment.sh
@@ -430,7 +431,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
430
431
  - !ruby/object:Gem::Version
431
432
  version: '0'
432
433
  requirements: []
433
- rubygems_version: 3.2.28
434
+ rubygems_version: 3.2.30
434
435
  signing_key:
435
436
  specification_version: 4
436
437
  summary: See description