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.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +35 -0
- data/CHANGELOG.md +41 -0
- data/README.md +54 -54
- data/doc/pacts/markdown/Pact Broker Client - Pact Broker.md +127 -94
- data/doc/pacts/markdown/Pact Broker Client - Pactflow.md +94 -0
- data/doc/pacts/markdown/README.md +1 -0
- data/lib/pact_broker/client/base_command.rb +3 -0
- data/lib/pact_broker/client/can_i_deploy.rb +40 -5
- data/lib/pact_broker/client/cli/broker.rb +8 -190
- data/lib/pact_broker/client/cli/custom_thor.rb +0 -16
- data/lib/pact_broker/client/cli/deployment_commands.rb +94 -0
- data/lib/pact_broker/client/cli/matrix_commands.rb +93 -0
- data/lib/pact_broker/client/cli/pacticipant_commands.rb +9 -0
- data/lib/pact_broker/client/cli/webhook_commands.rb +122 -0
- data/lib/pact_broker/client/deployments.rb +4 -0
- data/lib/pact_broker/client/deployments/record_deployment.rb +38 -0
- data/lib/pact_broker/client/deployments/record_release.rb +99 -0
- data/lib/pact_broker/client/deployments/record_support_ended.rb +103 -0
- data/lib/pact_broker/client/deployments/record_undeployment.rb +127 -0
- data/lib/pact_broker/client/describe_text_formatter.rb +23 -0
- data/lib/pact_broker/client/environments.rb +6 -3
- data/lib/pact_broker/client/environments/describe_environment.rb +3 -13
- data/lib/pact_broker/client/hal/entity.rb +22 -4
- data/lib/pact_broker/client/hal/http_client.rb +3 -2
- data/lib/pact_broker/client/pacticipants.rb +3 -3
- data/lib/pact_broker/client/pacticipants/create.rb +2 -2
- data/lib/pact_broker/client/pacticipants/describe.rb +33 -0
- data/lib/pact_broker/client/verification_required.rb +32 -0
- data/lib/pact_broker/client/version.rb +1 -1
- data/lib/pact_broker/client/versions.rb +4 -1
- data/lib/pact_broker/client/versions/describe.rb +3 -1
- data/lib/pact_broker/client/versions/formatter.rb +3 -1
- data/lib/pact_broker/client/versions/json_formatter.rb +5 -3
- data/lib/pact_broker/client/versions/text_formatter.rb +3 -1
- data/lib/pact_broker/client/webhooks/create.rb +14 -8
- data/script/record-deployment.sh +1 -1
- data/script/record-deployments-and-releases.sh +16 -0
- data/script/record-undeployment.sh +1 -1
- data/script/webhook-commands.sh +12 -0
- data/spec/fixtures/approvals/can_i_deploy_failure_dry_run.approved.txt +7 -0
- data/spec/fixtures/approvals/can_i_deploy_success_dry_run.approved.txt +7 -0
- data/spec/fixtures/approvals/describe_pacticipant.approved.txt +2 -0
- data/spec/integration/describe_environment_spec.rb +31 -0
- data/spec/lib/pact_broker/client/can_i_deploy_spec.rb +62 -2
- data/spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb +15 -2
- data/spec/lib/pact_broker/client/cli/broker_run_webhook_commands_spec.rb +4 -2
- data/spec/lib/pact_broker/client/deployments/record_deployment_spec.rb +204 -0
- data/spec/lib/pact_broker/client/deployments/record_support_ended_spec.rb +208 -0
- data/spec/lib/pact_broker/client/deployments/record_undeployment_spec.rb +219 -0
- data/spec/pacts/pact_broker_client-pact_broker.json +140 -112
- data/spec/pacts/pact_broker_client-pactflow.json +118 -0
- data/spec/service_providers/pact_broker_client_register_repository_spec.rb +2 -2
- data/spec/service_providers/pact_helper.rb +15 -10
- data/spec/service_providers/pactflow_webhooks_create_spec.rb +86 -0
- data/spec/service_providers/publish_pacts_spec.rb +3 -1
- data/spec/service_providers/record_deployment_spec.rb +4 -28
- data/spec/service_providers/record_release_spec.rb +130 -0
- data/spec/service_providers/record_undeployment_spec.rb +164 -0
- data/spec/service_providers/webhooks_create_spec.rb +1 -1
- data/spec/spec_helper.rb +14 -2
- data/spec/support/shared_context.rb +2 -1
- data/tasks/pact.rake +21 -1
- metadata +39 -7
- data/lib/pact_broker/client/versions/record_deployment.rb +0 -85
- data/lib/pact_broker/client/versions/record_undeployment.rb +0 -102
- data/spec/lib/pact_broker/client/versions/record_deployment_spec.rb +0 -75
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'pact_broker/client/base_command'
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Client
|
5
|
+
module Deployments
|
6
|
+
class RecordSupportEnded < PactBroker::Client::BaseCommand
|
7
|
+
def initialize(params, options, pact_broker_client_options)
|
8
|
+
super
|
9
|
+
@pacticipant_name = params.fetch(:pacticipant_name)
|
10
|
+
@environment_name = params.fetch(:environment_name)
|
11
|
+
@version_number = params.fetch(:version_number)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def do_call
|
17
|
+
if unsupported_versions_resources.empty?
|
18
|
+
PactBroker::Client::CommandResult.new(false, error_result_message)
|
19
|
+
else
|
20
|
+
PactBroker::Client::CommandResult.new(unsupported_versions_resources.all?(&:success?), result_message)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
attr_reader :pacticipant_name, :environment_name, :version_number
|
25
|
+
|
26
|
+
def currently_supported_versions_link
|
27
|
+
environment_resource._link("pb:currently-supported-released-versions", "pb:currently-supported-versions") or raise PactBroker::Client::Error.new(not_supported_message)
|
28
|
+
end
|
29
|
+
|
30
|
+
def currently_supported_version_entities_for_pacticipant_version
|
31
|
+
@deployed_version_links ||= currently_supported_versions_link.get!(pacticipant: pacticipant_name, version: version_number).embedded_entities!("releasedVersions")
|
32
|
+
end
|
33
|
+
|
34
|
+
def unsupported_versions_resources
|
35
|
+
@unsupported_versions_resources ||= currently_supported_version_entities_for_pacticipant_version.collect do | entity |
|
36
|
+
entity._link!("self").patch(currentlySupported: false)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def action
|
41
|
+
"undeployment"
|
42
|
+
end
|
43
|
+
|
44
|
+
def environment_resource
|
45
|
+
index_resource
|
46
|
+
._link!("pb:environments")
|
47
|
+
.get!
|
48
|
+
._links("pb:environments")
|
49
|
+
.find!(environment_name, "No environment found with name '#{environment_name}'")
|
50
|
+
.get!
|
51
|
+
end
|
52
|
+
|
53
|
+
def result_message
|
54
|
+
if json_output?
|
55
|
+
unsupported_versions_resources.collect{ | resource | resource.response.body }.to_a.to_json
|
56
|
+
else
|
57
|
+
unsupported_versions_resources.collect do | undeployed_versions_resource |
|
58
|
+
if undeployed_versions_resource.success?
|
59
|
+
green("#{success_result_text_message(undeployed_versions_resource)} in #{pact_broker_name}.")
|
60
|
+
else
|
61
|
+
red(undeployed_versions_resource.error_message)
|
62
|
+
end
|
63
|
+
end.join("\n")
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def success_result_text_message(undeployed_versions_resource)
|
68
|
+
"Recorded support ended for #{pacticipant_name} version #{version_number} in #{environment_name} environment"
|
69
|
+
end
|
70
|
+
|
71
|
+
def error_result_message
|
72
|
+
if json_output?
|
73
|
+
error_message_as_json(error_text)
|
74
|
+
else
|
75
|
+
red(error_text)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def error_text
|
80
|
+
if pacticipant_does_not_exist?
|
81
|
+
"No pacticipant with name '#{pacticipant_name}' found."
|
82
|
+
else
|
83
|
+
"#{pacticipant_name} version #{version_number} is not currently released in #{environment_name} environment. Cannot record support ended."
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def not_supported_message
|
88
|
+
"This version of the Pact Broker does not support recording end of support. Please upgrade to version 2.80.0 or later."
|
89
|
+
end
|
90
|
+
|
91
|
+
def pacticipant_does_not_exist?
|
92
|
+
index_resource._link("pb:pacticipant") && index_resource._link("pb:pacticipant").expand(pacticipant: pacticipant_name).get.does_not_exist?
|
93
|
+
end
|
94
|
+
|
95
|
+
def check_if_command_supported
|
96
|
+
unless index_resource.can?("pb:environments")
|
97
|
+
raise PactBroker::Client::Error.new(not_supported_message)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'pact_broker/client/base_command'
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Client
|
5
|
+
module Deployments
|
6
|
+
class RecordUndeployment < PactBroker::Client::BaseCommand
|
7
|
+
def initialize(params, options, pact_broker_client_options)
|
8
|
+
super
|
9
|
+
@pacticipant_name = params.fetch(:pacticipant_name)
|
10
|
+
@environment_name = params.fetch(:environment_name)
|
11
|
+
@target = params.fetch(:target)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def do_call
|
17
|
+
if undeployed_versions_resources.empty?
|
18
|
+
PactBroker::Client::CommandResult.new(false, error_result_message)
|
19
|
+
else
|
20
|
+
PactBroker::Client::CommandResult.new(undeployed_versions_resources.all?(&:success?), result_message)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
attr_reader :pacticipant_name, :environment_name, :target
|
25
|
+
|
26
|
+
def currently_deployed_versions_link
|
27
|
+
environment_resource._link("pb:currently-deployed-deployed-versions", "pb:currently-deployed-versions") or raise PactBroker::Client::Error.new(not_supported_message)
|
28
|
+
end
|
29
|
+
|
30
|
+
def currently_deployed_version_entities_for_pacticipant
|
31
|
+
@deployed_version_links ||= currently_deployed_versions_link.get!(pacticipant: pacticipant_name).embedded_entities!("deployedVersions")
|
32
|
+
end
|
33
|
+
|
34
|
+
def currently_deployed_version_entities_for_pacticipant_and_target
|
35
|
+
currently_deployed_version_entities_for_pacticipant.select do | entity |
|
36
|
+
entity.target == target
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def undeployed_versions_resources
|
41
|
+
@undeployed_versions_resources ||= currently_deployed_version_entities_for_pacticipant_and_target.collect do | entity |
|
42
|
+
entity._link!("self").patch(currentlyDeployed: false)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def action
|
47
|
+
"undeployment"
|
48
|
+
end
|
49
|
+
|
50
|
+
def environment_resource
|
51
|
+
index_resource
|
52
|
+
._link!("pb:environments")
|
53
|
+
.get!
|
54
|
+
._links("pb:environments")
|
55
|
+
.find!(environment_name, "No environment found with name '#{environment_name}'")
|
56
|
+
.get!
|
57
|
+
end
|
58
|
+
|
59
|
+
def result_message
|
60
|
+
if json_output?
|
61
|
+
undeployed_versions_resources.collect{ | resource | resource.response.body }.to_a.to_json
|
62
|
+
else
|
63
|
+
undeployed_versions_resources.collect do | undeployed_versions_resource |
|
64
|
+
if undeployed_versions_resource.success?
|
65
|
+
green("#{success_result_text_message(undeployed_versions_resource)} in #{pact_broker_name}.")
|
66
|
+
else
|
67
|
+
red(undeployed_versions_resource.error_message)
|
68
|
+
end
|
69
|
+
end.join("\n")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def success_result_text_message(undeployed_versions_resource)
|
74
|
+
version = undeployed_versions_resource.embedded_entity{ | embedded_entity| embedded_entity && embedded_entity['version'] }
|
75
|
+
message = "Recorded #{action} of #{pacticipant_name}"
|
76
|
+
message = "#{message} version #{version.number}" if (version && version.number)
|
77
|
+
message = "#{message} from #{environment_name} environment"
|
78
|
+
message = "#{message} (target #{target})" if target
|
79
|
+
message
|
80
|
+
end
|
81
|
+
|
82
|
+
def error_result_message
|
83
|
+
if json_output?
|
84
|
+
error_message_as_json(error_text)
|
85
|
+
else
|
86
|
+
red(error_text)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def error_text
|
91
|
+
if pacticipant_does_not_exist?
|
92
|
+
"No pacticipant with name '#{pacticipant_name}' found."
|
93
|
+
else
|
94
|
+
if currently_deployed_version_entities_for_pacticipant.any?
|
95
|
+
target_does_not_match_message
|
96
|
+
else
|
97
|
+
"#{pacticipant_name} is not currently deployed to #{environment_name} environment. Cannot record undeployment."
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def target_does_not_match_message
|
103
|
+
potential_targets = currently_deployed_version_entities_for_pacticipant.collect(&:target).collect { |target| target || "<no target>"}
|
104
|
+
if target
|
105
|
+
"#{pacticipant_name} is not currently deployed to target '#{target}' in #{environment_name} environment. Please specify one of the following targets to record the undeployment from: #{potential_targets.join(", ")}"
|
106
|
+
else
|
107
|
+
"Please specify one of the following targets to record the undeployment from: #{potential_targets.join(", ")}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def not_supported_message
|
112
|
+
"This version of the Pact Broker does not support recording undeployments. Please upgrade to version 2.80.0 or later."
|
113
|
+
end
|
114
|
+
|
115
|
+
def pacticipant_does_not_exist?
|
116
|
+
index_resource._link("pb:pacticipant") && index_resource._link("pb:pacticipant").expand(pacticipant: pacticipant_name).get.does_not_exist?
|
117
|
+
end
|
118
|
+
|
119
|
+
def check_if_command_supported
|
120
|
+
unless index_resource.can?("pb:environments")
|
121
|
+
raise PactBroker::Client::Error.new(not_supported_message)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'pact_broker/client/generate_display_name'
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Client
|
6
|
+
class DescribeTextFormatter
|
7
|
+
extend GenerateDisplayName
|
8
|
+
|
9
|
+
def self.call(properties)
|
10
|
+
YAML.dump(displayify_keys(properties)).gsub("---\n", "")
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.displayify_keys(thing)
|
14
|
+
case thing
|
15
|
+
when Hash then thing.each_with_object({}) { | (key, value), new_hash | new_hash[generate_display_name(key)] = displayify_keys(value) }
|
16
|
+
when Array then thing.collect{ | value | displayify_keys(value) }
|
17
|
+
else
|
18
|
+
thing
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,3 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'pact_broker/client/environments/create_environment'
|
2
|
+
require 'pact_broker/client/environments/delete_environment'
|
3
|
+
require 'pact_broker/client/environments/describe_environment'
|
4
|
+
require 'pact_broker/client/environments/list_environments'
|
5
|
+
require 'pact_broker/client/environments/update_environment'
|
6
|
+
|
@@ -1,12 +1,10 @@
|
|
1
1
|
require 'pact_broker/client/environments/environment_command'
|
2
|
-
require 'pact_broker/client/
|
3
|
-
require 'yaml'
|
2
|
+
require 'pact_broker/client/describe_text_formatter'
|
4
3
|
|
5
4
|
module PactBroker
|
6
5
|
module Client
|
7
6
|
module Environments
|
8
7
|
class DescribeEnvironment < PactBroker::Client::Environments::EnvironmentCommand
|
9
|
-
include PactBroker::Client::GenerateDisplayName
|
10
8
|
private
|
11
9
|
|
12
10
|
def do_call
|
@@ -18,16 +16,8 @@ module PactBroker
|
|
18
16
|
if json_output?
|
19
17
|
existing_environment_resource.response.raw_body
|
20
18
|
else
|
21
|
-
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
def displayify_keys(thing)
|
26
|
-
case thing
|
27
|
-
when Hash then thing.each_with_object({}) { | (key, value), new_hash | new_hash[generate_display_name(key)] = displayify_keys(value) }
|
28
|
-
when Array then thing.collect{ | value | displayify_keys(value) }
|
29
|
-
else
|
30
|
-
thing
|
19
|
+
properties = existing_environment_resource.response.body.except("_links", "_embedded")
|
20
|
+
PactBroker::Client::DescribeTextFormatter.call(properties)
|
31
21
|
end
|
32
22
|
end
|
33
23
|
end
|
@@ -8,6 +8,7 @@ module PactBroker
|
|
8
8
|
module Client
|
9
9
|
module Hal
|
10
10
|
class RelationNotFoundError < ::PactBroker::Client::Error; end
|
11
|
+
class EmbeddedEntityNotFoundError < ::PactBroker::Client::Error; end
|
11
12
|
class ErrorResponseReturned < ::PactBroker::Client::Error
|
12
13
|
attr_reader :entity
|
13
14
|
|
@@ -99,7 +100,17 @@ module PactBroker
|
|
99
100
|
|
100
101
|
def embedded_entity
|
101
102
|
embedded_ent = yield @data["_embedded"]
|
102
|
-
|
103
|
+
if embedded_ent
|
104
|
+
Entity.new(self_href(embedded_ent), embedded_ent, @client, response)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def embedded_entities!(key)
|
109
|
+
embedded_ents = (@data["_embedded"] && @data["_embedded"][key])
|
110
|
+
raise EmbeddedEntityNotFoundError.new("Could not find embedded entity with key '#{key}' in resource at #{@href}") unless embedded_ents
|
111
|
+
embedded_ents.collect do | embedded_ent |
|
112
|
+
Entity.new(self_href(embedded_ent), embedded_ent, @client, response)
|
113
|
+
end
|
103
114
|
end
|
104
115
|
|
105
116
|
def embedded_entities(key = nil)
|
@@ -109,7 +120,7 @@ module PactBroker
|
|
109
120
|
yield @data["_embedded"]
|
110
121
|
end
|
111
122
|
embedded_ents.collect do | embedded_ent |
|
112
|
-
Entity.new(embedded_ent
|
123
|
+
Entity.new(self_href(embedded_ent), embedded_ent, @client, response)
|
113
124
|
end
|
114
125
|
end
|
115
126
|
|
@@ -146,6 +157,10 @@ module PactBroker
|
|
146
157
|
def assert_success!(_ignored = nil)
|
147
158
|
self
|
148
159
|
end
|
160
|
+
|
161
|
+
def self_href(entity_hash)
|
162
|
+
entity_hash["_links"] && entity_hash["_links"]["self"] && entity_hash["_links"]["self"]["href"]
|
163
|
+
end
|
149
164
|
end
|
150
165
|
|
151
166
|
class ErrorEntity < Entity
|
@@ -165,14 +180,17 @@ module PactBroker
|
|
165
180
|
false
|
166
181
|
end
|
167
182
|
|
168
|
-
def
|
183
|
+
def error_message(messages = {})
|
169
184
|
default_message = "Error making request to #{@href} status=#{response ? response.status: nil} #{response ? response.raw_body : ''}".strip
|
170
185
|
message = if response && messages[response.status]
|
171
186
|
(messages[response.status] || "") + " (#{default_message})"
|
172
187
|
else
|
173
188
|
default_message
|
174
189
|
end
|
175
|
-
|
190
|
+
end
|
191
|
+
|
192
|
+
def assert_success!(messages = {})
|
193
|
+
raise ErrorResponseReturned.new(error_message(messages), self)
|
176
194
|
end
|
177
195
|
end
|
178
196
|
end
|
@@ -18,7 +18,7 @@ module PactBroker
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def get href, params = {}, headers = {}
|
21
|
-
query = params.collect{ |(key, value)| "#{CGI::escape(key.to_s)}=#{CGI::escape(value)}" }.join("&")
|
21
|
+
query = params.collect{ |(key, value)| "#{CGI::escape(key.to_s)}=#{CGI::escape(value.to_s)}" }.join("&")
|
22
22
|
uri = URI(href)
|
23
23
|
uri.query = query
|
24
24
|
perform_request(create_request(uri, 'Get', nil, headers), uri)
|
@@ -46,7 +46,8 @@ module PactBroker
|
|
46
46
|
|
47
47
|
def create_request uri, http_method, body = nil, headers = {}
|
48
48
|
request = Net::HTTP.const_get(http_method).new(uri.request_uri)
|
49
|
-
request['Content-Type']
|
49
|
+
request['Content-Type'] ||= "application/json" if ['Post', 'Put'].include?(http_method)
|
50
|
+
request['Content-Type'] ||= "application/merge-patch+json" if ['Patch'].include?(http_method)
|
50
51
|
request['Accept'] = "application/hal+json"
|
51
52
|
headers.each do | key, value |
|
52
53
|
request[key] = value
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# New code
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
require 'pact_broker/client/pacticipants/create'
|
3
|
+
require 'pact_broker/client/pacticipants/describe'
|
4
|
+
require 'pact_broker/client/pacticipants/list'
|
5
5
|
|
6
6
|
# Old code
|
7
7
|
require 'pact_broker/client/base_client'
|
@@ -17,7 +17,7 @@ module PactBroker
|
|
17
17
|
index_resource._link!('pb:pacticipants').post!(pacticipant_resource_params)
|
18
18
|
elsif pacticipant_entity.success?
|
19
19
|
@action = "updated"
|
20
|
-
pacticipant_entity._link!('self').patch!(pacticipant_resource_params)
|
20
|
+
pacticipant_entity._link!('self').patch!(pacticipant_resource_params, { "Content-Type" => "application/json" })
|
21
21
|
else
|
22
22
|
pacticipant_entity.assert_success!
|
23
23
|
end
|
@@ -30,7 +30,7 @@ module PactBroker
|
|
30
30
|
if json_output?
|
31
31
|
response_entity.response.raw_body
|
32
32
|
else
|
33
|
-
green(message = "Pacticipant \"#{params[:name]}\" #{action}")
|
33
|
+
green(message = "Pacticipant \"#{params[:name]}\" #{action} in #{pact_broker_name}")
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'pact_broker/client/base_command'
|
2
|
+
require 'pact_broker/client/describe_text_formatter'
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Client
|
6
|
+
module Pacticipants2
|
7
|
+
class Describe < PactBroker::Client::BaseCommand
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def do_call
|
12
|
+
PactBroker::Client::CommandResult.new(true, result_message)
|
13
|
+
end
|
14
|
+
|
15
|
+
def pacticipant_entity
|
16
|
+
@pacticipant_entity ||= index_resource._link('pb:pacticipant').expand('pacticipant' => params[:name]).get!
|
17
|
+
end
|
18
|
+
|
19
|
+
def result_message
|
20
|
+
if json_output?
|
21
|
+
pacticipant_entity.response.raw_body
|
22
|
+
else
|
23
|
+
properties = pacticipant_entity.response.body.except("_links", "_embedded")
|
24
|
+
if pacticipant_entity._embedded && pacticipant_entity._embedded["labels"] && pacticipant_entity._embedded["labels"].any?
|
25
|
+
properties["labels"] = pacticipant_entity._embedded["labels"]
|
26
|
+
end
|
27
|
+
PactBroker::Client::DescribeTextFormatter.call(properties)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|