pact_broker-client 1.43.0 → 1.47.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +35 -0
  3. data/CHANGELOG.md +41 -0
  4. data/README.md +54 -54
  5. data/doc/pacts/markdown/Pact Broker Client - Pact Broker.md +127 -94
  6. data/doc/pacts/markdown/Pact Broker Client - Pactflow.md +94 -0
  7. data/doc/pacts/markdown/README.md +1 -0
  8. data/lib/pact_broker/client/base_command.rb +3 -0
  9. data/lib/pact_broker/client/can_i_deploy.rb +40 -5
  10. data/lib/pact_broker/client/cli/broker.rb +8 -190
  11. data/lib/pact_broker/client/cli/custom_thor.rb +0 -16
  12. data/lib/pact_broker/client/cli/deployment_commands.rb +94 -0
  13. data/lib/pact_broker/client/cli/matrix_commands.rb +93 -0
  14. data/lib/pact_broker/client/cli/pacticipant_commands.rb +9 -0
  15. data/lib/pact_broker/client/cli/webhook_commands.rb +122 -0
  16. data/lib/pact_broker/client/deployments.rb +4 -0
  17. data/lib/pact_broker/client/deployments/record_deployment.rb +38 -0
  18. data/lib/pact_broker/client/deployments/record_release.rb +99 -0
  19. data/lib/pact_broker/client/deployments/record_support_ended.rb +103 -0
  20. data/lib/pact_broker/client/deployments/record_undeployment.rb +127 -0
  21. data/lib/pact_broker/client/describe_text_formatter.rb +23 -0
  22. data/lib/pact_broker/client/environments.rb +6 -3
  23. data/lib/pact_broker/client/environments/describe_environment.rb +3 -13
  24. data/lib/pact_broker/client/hal/entity.rb +22 -4
  25. data/lib/pact_broker/client/hal/http_client.rb +3 -2
  26. data/lib/pact_broker/client/pacticipants.rb +3 -3
  27. data/lib/pact_broker/client/pacticipants/create.rb +2 -2
  28. data/lib/pact_broker/client/pacticipants/describe.rb +33 -0
  29. data/lib/pact_broker/client/verification_required.rb +32 -0
  30. data/lib/pact_broker/client/version.rb +1 -1
  31. data/lib/pact_broker/client/versions.rb +4 -1
  32. data/lib/pact_broker/client/versions/describe.rb +3 -1
  33. data/lib/pact_broker/client/versions/formatter.rb +3 -1
  34. data/lib/pact_broker/client/versions/json_formatter.rb +5 -3
  35. data/lib/pact_broker/client/versions/text_formatter.rb +3 -1
  36. data/lib/pact_broker/client/webhooks/create.rb +14 -8
  37. data/script/record-deployment.sh +1 -1
  38. data/script/record-deployments-and-releases.sh +16 -0
  39. data/script/record-undeployment.sh +1 -1
  40. data/script/webhook-commands.sh +12 -0
  41. data/spec/fixtures/approvals/can_i_deploy_failure_dry_run.approved.txt +7 -0
  42. data/spec/fixtures/approvals/can_i_deploy_success_dry_run.approved.txt +7 -0
  43. data/spec/fixtures/approvals/describe_pacticipant.approved.txt +2 -0
  44. data/spec/integration/describe_environment_spec.rb +31 -0
  45. data/spec/lib/pact_broker/client/can_i_deploy_spec.rb +62 -2
  46. data/spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb +15 -2
  47. data/spec/lib/pact_broker/client/cli/broker_run_webhook_commands_spec.rb +4 -2
  48. data/spec/lib/pact_broker/client/deployments/record_deployment_spec.rb +204 -0
  49. data/spec/lib/pact_broker/client/deployments/record_support_ended_spec.rb +208 -0
  50. data/spec/lib/pact_broker/client/deployments/record_undeployment_spec.rb +219 -0
  51. data/spec/pacts/pact_broker_client-pact_broker.json +140 -112
  52. data/spec/pacts/pact_broker_client-pactflow.json +118 -0
  53. data/spec/service_providers/pact_broker_client_register_repository_spec.rb +2 -2
  54. data/spec/service_providers/pact_helper.rb +15 -10
  55. data/spec/service_providers/pactflow_webhooks_create_spec.rb +86 -0
  56. data/spec/service_providers/publish_pacts_spec.rb +3 -1
  57. data/spec/service_providers/record_deployment_spec.rb +4 -28
  58. data/spec/service_providers/record_release_spec.rb +130 -0
  59. data/spec/service_providers/record_undeployment_spec.rb +164 -0
  60. data/spec/service_providers/webhooks_create_spec.rb +1 -1
  61. data/spec/spec_helper.rb +14 -2
  62. data/spec/support/shared_context.rb +2 -1
  63. data/tasks/pact.rake +21 -1
  64. metadata +39 -7
  65. data/lib/pact_broker/client/versions/record_deployment.rb +0 -85
  66. data/lib/pact_broker/client/versions/record_undeployment.rb +0 -102
  67. data/spec/lib/pact_broker/client/versions/record_deployment_spec.rb +0 -75
@@ -0,0 +1,164 @@
1
+ require 'service_providers/pact_helper'
2
+ require 'pact_broker/client/deployments/record_undeployment'
3
+
4
+ RSpec.describe "recording an undeployment", pact: true do
5
+ include_context "pact broker"
6
+ include PactBrokerPactHelperMethods
7
+
8
+ let(:pacticipant_name) { "Foo" }
9
+ let(:environment_name) { "test" }
10
+ let(:output) { "text" }
11
+ let(:target) { "customer-1" }
12
+ let(:params) do
13
+ {
14
+ pacticipant_name: pacticipant_name,
15
+ environment_name: environment_name,
16
+ target: target
17
+ }
18
+ end
19
+ let(:options) do
20
+ {
21
+ output: output,
22
+ verbose: true
23
+ }
24
+ end
25
+ let(:webmock_base_url) { "http://broker" }
26
+ let(:pact_broker_client_options) { { pact_broker_base_url: webmock_base_url } }
27
+ let(:test_environment_placeholder_path) { "/HAL-REL-PLACEHOLDER-PB-ENVIRONMENT-16926ef3-590f-4e3f-838e-719717aa88c9" }
28
+ let(:currently_deployed_versions_placeholder_path) { "/PLACEHOLDER-ENVIRONMENT-CURRENTLY-DEPLOYED-16926ef3-590f-4e3f-838e-719717aa88c9" }
29
+ let(:deployed_version_placeholder_path) { "/PLACEHOLDER-DEPLOYED-VERSION-ff3adecf-cfc5-4653-a4e3-f1861092f8e0"}
30
+
31
+ subject { PactBroker::Client::Deployments::RecordUndeployment.call(params, options, pact_broker_client_options) }
32
+
33
+ let(:index_body_hash) do
34
+ {
35
+ _links: {
36
+ :'pb:environments' => {
37
+ href: "#{webmock_base_url}/environments"
38
+ }
39
+ }
40
+ }
41
+ end
42
+
43
+ let(:environments_hash) do
44
+ {
45
+ _links: {
46
+ :'pb:environments' => [
47
+ {
48
+ name: "test",
49
+ href: pact_broker.mock_service_base_url + test_environment_placeholder_path
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ end
55
+
56
+ let!(:index_request) do
57
+ stub_request(:get, "http://broker").to_return(status: 200, body: index_body_hash.to_json, headers: { "Content-Type" => "application/hal+json" } )
58
+ end
59
+
60
+ let!(:environments_request) do
61
+ stub_request(:get, "http://broker/environments").to_return(status: 200, body: environments_hash.to_json, headers: { "Content-Type" => "application/hal+json" } )
62
+ end
63
+
64
+ def mock_test_environment
65
+ pact_broker
66
+ .given("an environment with name test and UUID 16926ef3-590f-4e3f-838e-719717aa88c9 exists")
67
+ .upon_receiving("a request for an environment")
68
+ .with(
69
+ method: "GET",
70
+ path: test_environment_placeholder_path,
71
+ headers: get_request_headers
72
+ )
73
+ .will_respond_with(
74
+ status: 200,
75
+ headers: pact_broker_response_headers,
76
+ body: {
77
+ _links: {
78
+ :'pb:currently-deployed-deployed-versions' => {
79
+ href: Pact.term( pact_broker.mock_service_base_url + currently_deployed_versions_placeholder_path, /^http.*/)
80
+ }
81
+ }
82
+ }
83
+ )
84
+ end
85
+
86
+ def mock_deployed_versions_search_results
87
+ pact_broker
88
+ .given("an version is deployed to environment with UUID 16926ef3-590f-4e3f-838e-719717aa88c9 with target customer-1")
89
+ .upon_receiving("a request to list the versions deployed to an environment for a pacticipant name and target")
90
+ .with(
91
+ method: "GET",
92
+ path: currently_deployed_versions_placeholder_path,
93
+ query: { pacticipant: pacticipant_name },
94
+ headers: get_request_headers
95
+ )
96
+ .will_respond_with(
97
+ status: 200,
98
+ headers: pact_broker_response_headers,
99
+ body: {
100
+ _embedded: {
101
+ deployedVersions: [
102
+ {
103
+ target: target,
104
+ _links: {
105
+ self: {
106
+ href: Pact.term(pact_broker.mock_service_base_url + deployed_version_placeholder_path, /^http/)
107
+ }
108
+ }
109
+ }
110
+ ]
111
+ }
112
+ }
113
+ )
114
+ end
115
+
116
+ def mock_mark_deployed_version_as_undeployed
117
+ pact_broker
118
+ .given("a currently deployed version exists")
119
+ .upon_receiving("a request to mark a deployed version as not currently deploye")
120
+ .with(
121
+ method: "PATCH",
122
+ path: deployed_version_placeholder_path,
123
+ body: { currentlyDeployed: false },
124
+ headers: patch_request_headers
125
+ )
126
+ .will_respond_with(
127
+ status: 200,
128
+ headers: pact_broker_response_headers,
129
+ body: deployed_version_hash
130
+ )
131
+ end
132
+
133
+ let(:deployed_version_hash) do
134
+ {
135
+ "currentlyDeployed" => false,
136
+ "_embedded" => {
137
+ "version" => {
138
+ "number" => Pact.like("2")
139
+ }
140
+ }
141
+ }
142
+ end
143
+
144
+ context "when the deployment is recorded successfully" do
145
+ before do
146
+ mock_test_environment
147
+ mock_deployed_versions_search_results
148
+ mock_mark_deployed_version_as_undeployed
149
+ end
150
+
151
+ it "returns a success message" do
152
+ expect(subject.success).to be true
153
+ expect(subject.message).to include "Recorded undeployment of Foo version 2 from test environment (target customer-1) in the Pact Broker"
154
+ end
155
+
156
+ context "when the output is json" do
157
+ let(:output) { "json" }
158
+
159
+ it "returns the JSON payload" do
160
+ expect(JSON.parse(subject.message)).to eq [Pact::Reification.from_term(deployed_version_hash)]
161
+ end
162
+ end
163
+ end
164
+ end
@@ -134,7 +134,7 @@ RSpec.describe "creating a webhook", pact: true do
134
134
  context "when an invalid webhook is submitted" do
135
135
  before do
136
136
  params[:url] = nil
137
- request_body["request"]["url"] = nil
137
+ request_body["request"].delete("url")
138
138
 
139
139
  pact_broker
140
140
  .given("the 'Pricing Service' and 'Condor' already exist in the pact-broker")
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  require 'webmock/rspec'
2
2
  require 'rspec/its'
3
3
 
4
- ENV['PACT_BROKER_FEATURES'] = 'deployments publish_contracts ignore'
5
-
6
4
  WebMock.disable_net_connect!(allow_localhost: true)
7
5
 
8
6
  require "./spec/support/shared_context.rb"
@@ -17,6 +15,7 @@ RSpec.configure do | config |
17
15
  ENV.delete('PACT_BROKER_BASE_URL')
18
16
  ENV.delete('PACT_BROKER_USERNAME')
19
17
  ENV.delete('PACT_BROKER_PASSWORD')
18
+ ENV.delete('PACT_BROKER_TOKEN')
20
19
  end
21
20
 
22
21
  config.after(:all) do
@@ -25,6 +24,19 @@ RSpec.configure do | config |
25
24
 
26
25
  config.filter_run_excluding skip_windows: is_windows, skip_ci: is_ci
27
26
  config.example_status_persistence_file_path = "./spec/examples.txt"
27
+
28
+ def capture(stream)
29
+ begin
30
+ stream = stream.to_s
31
+ eval "$#{stream} = StringIO.new"
32
+ yield
33
+ result = eval("$#{stream}").string
34
+ ensure
35
+ eval("$#{stream} = #{stream.upcase}")
36
+ end
37
+
38
+ result
39
+ end
28
40
  end
29
41
 
30
42
  module Pact
@@ -17,7 +17,8 @@ shared_context "pact broker" do
17
17
  let(:pact_broker_version) { Pact::Term.new(:matcher => /\d+\.\d+\.\d+/, :generate => '1.0.0') }
18
18
  let(:pact_broker_response_headers) { {'Content-Type' => 'application/hal+json;charset=utf-8'} }
19
19
  let(:default_request_headers) { { 'Content-Type' => 'application/json'} }
20
- let(:patch_request_headers) { { 'Content-Type' => 'application/json'} }
20
+ let(:old_patch_request_headers) { { 'Content-Type' => 'application/json'} }
21
+ let(:patch_request_headers) { { 'Content-Type' => 'application/merge-patch+json'} }
21
22
  let(:put_request_headers) { { 'Content-Type' => 'application/json', 'Accept' => 'application/hal+json'} }
22
23
  let(:post_request_headers) { { 'Content-Type' => 'application/json', 'Accept' => 'application/hal+json'} }
23
24
  let(:get_request_headers) { { 'Accept' => 'application/hal+json'} }
data/tasks/pact.rake CHANGED
@@ -14,5 +14,25 @@ PactBroker::Client::PublicationTask.new(:remote) do | task |
14
14
  task.tag = `git rev-parse --abbrev-ref HEAD`.strip
15
15
  task.consumer_version = PactBroker::Client::VERSION
16
16
  task.pact_broker_base_url = "https://test.pact.dius.com.au"
17
- task.pact_broker_basic_auth = {username: ENV.fetch('PACT_BROKER_USERNAME'), password: ENV.fetch('PACT_BROKER_PASSWORD')}
17
+ task.pact_broker_basic_auth = { username: ENV.fetch('PACT_BROKER_USERNAME'), password: ENV.fetch('PACT_BROKER_PASSWORD') }
18
+ end
19
+
20
+ PactBroker::Client::PublicationTask.new(:pactflow) do | task |
21
+ version = ENV.fetch('GITHUB_SHA')
22
+ branch = ENV.fetch('GITHUB_REF').gsub("refs/heads/", "")
23
+ feature = ENV.fetch('TEST_FEATURE', '')
24
+ tag = branch
25
+
26
+ if feature != ''
27
+ version = "#{version}+#{feature}"
28
+ tag = "#{tag}+#{feature}"
29
+ end
30
+
31
+ require 'pact_broker/client/version'
32
+ task.auto_detect_version_properties = false
33
+ task.tags = [tag]
34
+ task.branch = nil
35
+ task.consumer_version = version
36
+ task.pact_broker_base_url = "https://pact-oss.pactflow.io"
37
+ task.pact_broker_token = ENV['PACT_BROKER_TOKEN']
18
38
  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.43.0
4
+ version: 1.47.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-06-03 00:00:00.000000000 Z
11
+ date: 2021-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -230,6 +230,7 @@ files:
230
230
  - doc/markdown/Pact Broker Client - Pact Broker.md
231
231
  - doc/markdown/README.md
232
232
  - doc/pacts/markdown/Pact Broker Client - Pact Broker.md
233
+ - doc/pacts/markdown/Pact Broker Client - Pactflow.md
233
234
  - doc/pacts/markdown/README.md
234
235
  - example/scripts/README.md
235
236
  - example/scripts/deploy-consumer.sh
@@ -247,13 +248,22 @@ files:
247
248
  - lib/pact_broker/client/cli/create_or_update_webhook_long_desc.txt
248
249
  - lib/pact_broker/client/cli/create_webhook_long_desc.txt
249
250
  - lib/pact_broker/client/cli/custom_thor.rb
251
+ - lib/pact_broker/client/cli/deployment_commands.rb
250
252
  - lib/pact_broker/client/cli/environment_commands.rb
253
+ - lib/pact_broker/client/cli/matrix_commands.rb
251
254
  - lib/pact_broker/client/cli/pacticipant_commands.rb
252
255
  - lib/pact_broker/client/cli/record_deployment_long_desc.txt
253
256
  - lib/pact_broker/client/cli/version_selector_options_parser.rb
257
+ - lib/pact_broker/client/cli/webhook_commands.rb
254
258
  - lib/pact_broker/client/colorize_notices.rb
255
259
  - lib/pact_broker/client/command_result.rb
256
260
  - lib/pact_broker/client/create_tag.rb
261
+ - lib/pact_broker/client/deployments.rb
262
+ - lib/pact_broker/client/deployments/record_deployment.rb
263
+ - lib/pact_broker/client/deployments/record_release.rb
264
+ - lib/pact_broker/client/deployments/record_support_ended.rb
265
+ - lib/pact_broker/client/deployments/record_undeployment.rb
266
+ - lib/pact_broker/client/describe_text_formatter.rb
257
267
  - lib/pact_broker/client/environments.rb
258
268
  - lib/pact_broker/client/environments/create_environment.rb
259
269
  - lib/pact_broker/client/environments/delete_environment.rb
@@ -286,6 +296,7 @@ files:
286
296
  - lib/pact_broker/client/pact_hash.rb
287
297
  - lib/pact_broker/client/pacticipants.rb
288
298
  - lib/pact_broker/client/pacticipants/create.rb
299
+ - lib/pact_broker/client/pacticipants/describe.rb
289
300
  - lib/pact_broker/client/pacticipants/list.rb
290
301
  - lib/pact_broker/client/pacticipants/text_formatter.rb
291
302
  - lib/pact_broker/client/pacts.rb
@@ -296,13 +307,12 @@ files:
296
307
  - lib/pact_broker/client/string_refinements.rb
297
308
  - lib/pact_broker/client/tasks.rb
298
309
  - lib/pact_broker/client/tasks/publication_task.rb
310
+ - lib/pact_broker/client/verification_required.rb
299
311
  - lib/pact_broker/client/version.rb
300
312
  - lib/pact_broker/client/versions.rb
301
313
  - lib/pact_broker/client/versions/describe.rb
302
314
  - lib/pact_broker/client/versions/formatter.rb
303
315
  - lib/pact_broker/client/versions/json_formatter.rb
304
- - lib/pact_broker/client/versions/record_deployment.rb
305
- - lib/pact_broker/client/versions/record_undeployment.rb
306
316
  - lib/pact_broker/client/versions/text_formatter.rb
307
317
  - lib/pact_broker/client/webhooks/create.rb
308
318
  - lib/pact_broker/client/webhooks/test.rb
@@ -313,15 +323,21 @@ files:
313
323
  - script/generate-cli-usage.sh
314
324
  - script/publish-pact.sh
315
325
  - script/record-deployment.sh
326
+ - script/record-deployments-and-releases.sh
316
327
  - script/record-undeployment.sh
317
328
  - script/release.sh
318
329
  - script/trigger-release.sh
330
+ - script/webhook-commands.sh
331
+ - spec/fixtures/approvals/can_i_deploy_failure_dry_run.approved.txt
319
332
  - spec/fixtures/approvals/can_i_deploy_ignore.approved.txt
333
+ - spec/fixtures/approvals/can_i_deploy_success_dry_run.approved.txt
320
334
  - spec/fixtures/approvals/describe_environment.approved.txt
335
+ - spec/fixtures/approvals/describe_pacticipant.approved.txt
321
336
  - spec/fixtures/approvals/list_environments.approved.txt
322
337
  - spec/fixtures/foo-bar.json
323
338
  - spec/integration/can_i_deploy_spec.rb
324
339
  - spec/integration/create_version_tag_spec.rb
340
+ - spec/integration/describe_environment_spec.rb
325
341
  - spec/lib/pact_broker/client/base_client_spec.rb
326
342
  - spec/lib/pact_broker/client/can_i_deploy_spec.rb
327
343
  - spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb
@@ -331,6 +347,9 @@ files:
331
347
  - spec/lib/pact_broker/client/cli/broker_run_webhook_commands_spec.rb
332
348
  - spec/lib/pact_broker/client/cli/custom_thor_spec.rb
333
349
  - spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb
350
+ - spec/lib/pact_broker/client/deployments/record_deployment_spec.rb
351
+ - spec/lib/pact_broker/client/deployments/record_support_ended_spec.rb
352
+ - spec/lib/pact_broker/client/deployments/record_undeployment_spec.rb
334
353
  - spec/lib/pact_broker/client/environments/delete_environment_spec.rb
335
354
  - spec/lib/pact_broker/client/environments/describe_environment_spec.rb
336
355
  - spec/lib/pact_broker/client/environments/update_environment_spec.rb
@@ -351,10 +370,10 @@ files:
351
370
  - spec/lib/pact_broker/client/retry_spec.rb
352
371
  - spec/lib/pact_broker/client/tasks/publication_task_spec.rb
353
372
  - spec/lib/pact_broker/client/versions/describe_spec.rb
354
- - spec/lib/pact_broker/client/versions/record_deployment_spec.rb
355
373
  - spec/lib/pact_broker/client/versions_spec.rb
356
374
  - spec/lib/pact_broker/client/webhooks/create_spec.rb
357
375
  - spec/pacts/pact_broker_client-pact_broker.json
376
+ - spec/pacts/pact_broker_client-pactflow.json
358
377
  - spec/service_providers/create_environment_spec.rb
359
378
  - spec/service_providers/extra_goodies_spec.rb
360
379
  - spec/service_providers/list_environments_spec.rb
@@ -370,9 +389,12 @@ files:
370
389
  - spec/service_providers/pact_broker_client_tags_spec.rb
371
390
  - spec/service_providers/pact_broker_client_versions_spec.rb
372
391
  - spec/service_providers/pact_helper.rb
392
+ - spec/service_providers/pactflow_webhooks_create_spec.rb
373
393
  - spec/service_providers/pacticipants_create_spec.rb
374
394
  - spec/service_providers/publish_pacts_spec.rb
375
395
  - spec/service_providers/record_deployment_spec.rb
396
+ - spec/service_providers/record_release_spec.rb
397
+ - spec/service_providers/record_undeployment_spec.rb
376
398
  - spec/service_providers/webhooks_create_spec.rb
377
399
  - spec/spec_helper.rb
378
400
  - spec/support/approvals.rb
@@ -407,17 +429,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
407
429
  - !ruby/object:Gem::Version
408
430
  version: '0'
409
431
  requirements: []
410
- rubygems_version: 3.2.19
432
+ rubygems_version: 3.2.24
411
433
  signing_key:
412
434
  specification_version: 4
413
435
  summary: See description
414
436
  test_files:
437
+ - spec/fixtures/approvals/can_i_deploy_failure_dry_run.approved.txt
415
438
  - spec/fixtures/approvals/can_i_deploy_ignore.approved.txt
439
+ - spec/fixtures/approvals/can_i_deploy_success_dry_run.approved.txt
416
440
  - spec/fixtures/approvals/describe_environment.approved.txt
441
+ - spec/fixtures/approvals/describe_pacticipant.approved.txt
417
442
  - spec/fixtures/approvals/list_environments.approved.txt
418
443
  - spec/fixtures/foo-bar.json
419
444
  - spec/integration/can_i_deploy_spec.rb
420
445
  - spec/integration/create_version_tag_spec.rb
446
+ - spec/integration/describe_environment_spec.rb
421
447
  - spec/lib/pact_broker/client/base_client_spec.rb
422
448
  - spec/lib/pact_broker/client/can_i_deploy_spec.rb
423
449
  - spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb
@@ -427,6 +453,9 @@ test_files:
427
453
  - spec/lib/pact_broker/client/cli/broker_run_webhook_commands_spec.rb
428
454
  - spec/lib/pact_broker/client/cli/custom_thor_spec.rb
429
455
  - spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb
456
+ - spec/lib/pact_broker/client/deployments/record_deployment_spec.rb
457
+ - spec/lib/pact_broker/client/deployments/record_support_ended_spec.rb
458
+ - spec/lib/pact_broker/client/deployments/record_undeployment_spec.rb
430
459
  - spec/lib/pact_broker/client/environments/delete_environment_spec.rb
431
460
  - spec/lib/pact_broker/client/environments/describe_environment_spec.rb
432
461
  - spec/lib/pact_broker/client/environments/update_environment_spec.rb
@@ -447,10 +476,10 @@ test_files:
447
476
  - spec/lib/pact_broker/client/retry_spec.rb
448
477
  - spec/lib/pact_broker/client/tasks/publication_task_spec.rb
449
478
  - spec/lib/pact_broker/client/versions/describe_spec.rb
450
- - spec/lib/pact_broker/client/versions/record_deployment_spec.rb
451
479
  - spec/lib/pact_broker/client/versions_spec.rb
452
480
  - spec/lib/pact_broker/client/webhooks/create_spec.rb
453
481
  - spec/pacts/pact_broker_client-pact_broker.json
482
+ - spec/pacts/pact_broker_client-pactflow.json
454
483
  - spec/service_providers/create_environment_spec.rb
455
484
  - spec/service_providers/extra_goodies_spec.rb
456
485
  - spec/service_providers/list_environments_spec.rb
@@ -466,9 +495,12 @@ test_files:
466
495
  - spec/service_providers/pact_broker_client_tags_spec.rb
467
496
  - spec/service_providers/pact_broker_client_versions_spec.rb
468
497
  - spec/service_providers/pact_helper.rb
498
+ - spec/service_providers/pactflow_webhooks_create_spec.rb
469
499
  - spec/service_providers/pacticipants_create_spec.rb
470
500
  - spec/service_providers/publish_pacts_spec.rb
471
501
  - spec/service_providers/record_deployment_spec.rb
502
+ - spec/service_providers/record_release_spec.rb
503
+ - spec/service_providers/record_undeployment_spec.rb
472
504
  - spec/service_providers/webhooks_create_spec.rb
473
505
  - spec/spec_helper.rb
474
506
  - spec/support/approvals.rb
@@ -1,85 +0,0 @@
1
- require 'pact_broker/client/base_command'
2
-
3
- module PactBroker
4
- module Client
5
- class Versions
6
- class RecordDeployment < PactBroker::Client::BaseCommand
7
-
8
- NOT_SUPPORTED_MESSAGE = "This version of the Pact Broker does not support recording deployments. Please upgrade to version 2.80.0 or later."
9
-
10
- def initialize(params, options, pact_broker_client_options)
11
- super
12
- @pacticipant_name = params.fetch(:pacticipant_name)
13
- @version_number = params.fetch(:version_number)
14
- @environment_name = params.fetch(:environment_name)
15
- @target = params.fetch(:target)
16
- end
17
-
18
- private
19
-
20
- def do_call
21
- record_deployment
22
- PactBroker::Client::CommandResult.new(true, result_message)
23
- end
24
-
25
- attr_reader :pacticipant_name, :version_number, :environment_name, :target, :output
26
- attr_reader :deployed_version_resource
27
-
28
- def check_environment_exists
29
- index_resource
30
- ._link!("pb:environments")
31
- .get!
32
- ._links("pb:environments")
33
- .find!(environment_name, "No environment found with name '#{environment_name}'")
34
- end
35
-
36
- def record_deployment
37
- @deployed_version_resource =
38
- get_record_deployment_relation
39
- .post(record_deployment_request_body)
40
- .assert_success!
41
- end
42
-
43
- def get_record_deployment_relation
44
- record_deployment_links = get_pacticipant_version._links!("pb:record-deployment")
45
- link_for_environment = record_deployment_links.find(environment_name)
46
- if link_for_environment
47
- link_for_environment
48
- else
49
- check_environment_exists
50
- # Force the exception to be raised
51
- record_deployment_links.find!(environment_name, "Environment '#{environment_name}' is not an available option for recording a deployment of #{pacticipant_name}.")
52
- end
53
- end
54
-
55
- def get_pacticipant_version
56
- index_resource
57
- ._link!("pb:pacticipant-version")
58
- .expand(pacticipant: pacticipant_name, version: version_number)
59
- .get
60
- .assert_success!(404 => "#{pacticipant_name} version #{version_number} not found")
61
- end
62
-
63
- def record_deployment_request_body
64
- { target: target }
65
- end
66
-
67
- def result_message
68
- if json_output?
69
- deployed_version_resource.response.raw_body
70
- else
71
- message = "Recorded deployment of #{pacticipant_name} version #{version_number} to #{environment_name} environment"
72
- message = "#{message} (target #{target})" if target
73
- green("#{message} in #{pact_broker_name}.")
74
- end
75
- end
76
-
77
- def check_if_command_supported
78
- unless index_resource.can?("pb:environments")
79
- raise PactBroker::Client::Error.new(NOT_SUPPORTED_MESSAGE)
80
- end
81
- end
82
- end
83
- end
84
- end
85
- end