pact_broker-client 1.75.2 → 1.75.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/pact_broker/client/version.rb +1 -1
- metadata +19 -216
- data/.github/workflows/test.yml +0 -59
- data/.rspec +0 -3
- data/lib/pact_broker/client/pacts/list_latest_versions.rb +0 -66
- data/lib/pact_broker/client/webhooks/test.rb +0 -16
- data/pact-broker-client.gemspec +0 -30
- data/spec/fixtures/MyConsumer-MyProvider (1).json +0 -37
- data/spec/fixtures/MyConsumer-MyProvider.json +0 -37
- data/spec/fixtures/approvals/can_i_deploy_failure_dry_run.approved.txt +0 -7
- data/spec/fixtures/approvals/can_i_deploy_ignore.approved.txt +0 -13
- data/spec/fixtures/approvals/can_i_deploy_success_dry_run.approved.txt +0 -7
- data/spec/fixtures/approvals/describe_environment.approved.txt +0 -7
- data/spec/fixtures/approvals/describe_pacticipant.approved.txt +0 -2
- data/spec/fixtures/approvals/list_environments.approved.txt +0 -3
- data/spec/fixtures/approvals/publish_provider_contract.approved.txt +0 -2
- data/spec/fixtures/certificates/ca_cert.pem +0 -19
- data/spec/fixtures/certificates/ca_cert.srl +0 -1
- data/spec/fixtures/certificates/ca_key.pem +0 -28
- data/spec/fixtures/certificates/client_cert.pem +0 -17
- data/spec/fixtures/certificates/key.pem +0 -28
- data/spec/fixtures/certificates/server.csr +0 -15
- data/spec/fixtures/certificates/unsigned_cert.pem +0 -19
- data/spec/fixtures/certificates/unsigned_key.pem +0 -28
- data/spec/fixtures/foo-bar.json +0 -31
- data/spec/integration/can_i_deploy_spec.rb +0 -24
- data/spec/integration/can_i_merge_spec.rb +0 -44
- data/spec/integration/create_version_tag_spec.rb +0 -20
- data/spec/integration/describe_environment_spec.rb +0 -31
- data/spec/integration/publish_provider_contract_spec.rb +0 -53
- data/spec/integration/unknown_options_spec.rb +0 -39
- data/spec/lib/pact_broker/client/base_client_spec.rb +0 -182
- data/spec/lib/pact_broker/client/branches/delete_branch_spec.rb +0 -103
- data/spec/lib/pact_broker/client/can_i_deploy_spec.rb +0 -250
- data/spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb +0 -196
- data/spec/lib/pact_broker/client/cli/broker_create_or_update_webhook_spec.rb +0 -23
- data/spec/lib/pact_broker/client/cli/broker_create_webhook_spec.rb +0 -23
- data/spec/lib/pact_broker/client/cli/broker_publish_spec.rb +0 -327
- data/spec/lib/pact_broker/client/cli/broker_run_webhook_commands_spec.rb +0 -287
- data/spec/lib/pact_broker/client/cli/custom_thor_spec.rb +0 -174
- data/spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb +0 -97
- data/spec/lib/pact_broker/client/deployments/record_deployment_spec.rb +0 -224
- data/spec/lib/pact_broker/client/deployments/record_support_ended_spec.rb +0 -208
- data/spec/lib/pact_broker/client/deployments/record_undeployment_spec.rb +0 -227
- data/spec/lib/pact_broker/client/environments/delete_environment_spec.rb +0 -120
- data/spec/lib/pact_broker/client/environments/describe_environment_spec.rb +0 -89
- data/spec/lib/pact_broker/client/environments/update_environment_spec.rb +0 -167
- data/spec/lib/pact_broker/client/generate_display_name_spec.rb +0 -39
- data/spec/lib/pact_broker/client/git_spec.rb +0 -159
- data/spec/lib/pact_broker/client/hal/authorization_header_redactor_spec.rb +0 -17
- data/spec/lib/pact_broker/client/hal/entity_spec.rb +0 -149
- data/spec/lib/pact_broker/client/hal/http_client_spec.rb +0 -238
- data/spec/lib/pact_broker/client/hal/link_spec.rb +0 -127
- data/spec/lib/pact_broker/client/matrix/abbreviate_version_number_spec.rb +0 -42
- data/spec/lib/pact_broker/client/matrix/resource_spec.rb +0 -70
- data/spec/lib/pact_broker/client/matrix/text_formatter_spec.rb +0 -63
- data/spec/lib/pact_broker/client/matrix_spec.rb +0 -17
- data/spec/lib/pact_broker/client/merge_pacts_spec.rb +0 -198
- data/spec/lib/pact_broker/client/pact_broker_client_spec.rb +0 -47
- data/spec/lib/pact_broker/client/pacticipants/create_spec.rb +0 -31
- data/spec/lib/pact_broker/client/pacticipants_spec.rb +0 -18
- data/spec/lib/pact_broker/client/publish_pacts_the_old_way_spec.rb +0 -272
- data/spec/lib/pact_broker/client/retry_spec.rb +0 -119
- data/spec/lib/pact_broker/client/tasks/publication_task_spec.rb +0 -231
- data/spec/lib/pact_broker/client/versions/create_spec.rb +0 -174
- data/spec/lib/pact_broker/client/versions/describe_spec.rb +0 -64
- data/spec/lib/pact_broker/client/versions_spec.rb +0 -34
- data/spec/lib/pact_broker/client/webhooks/create_spec.rb +0 -99
- data/spec/lib/pactflow/client/provider_contracts/publish_spec.rb +0 -179
- data/spec/pacts/pact_broker_client-pact_broker.json +0 -2969
- data/spec/pacts/pact_broker_client-pactflow.json +0 -288
- data/spec/readme_spec.rb +0 -16
- data/spec/service_providers/create_environment_spec.rb +0 -78
- data/spec/service_providers/delete_branch_spec.rb +0 -68
- data/spec/service_providers/extra_goodies_spec.rb +0 -108
- data/spec/service_providers/list_environments_spec.rb +0 -77
- data/spec/service_providers/list_latest_pact_versions_spec.rb.bak +0 -44
- data/spec/service_providers/pact_broker_client_matrix_ignore_spec.rb +0 -98
- data/spec/service_providers/pact_broker_client_matrix_spec.rb +0 -292
- data/spec/service_providers/pact_broker_client_pacticipant_version_spec.rb +0 -56
- data/spec/service_providers/pact_broker_client_publish_spec.rb +0 -135
- data/spec/service_providers/pact_broker_client_register_repository_spec.rb +0 -49
- data/spec/service_providers/pact_broker_client_retrieve_all_pacts_for_provider_spec.rb +0 -53
- data/spec/service_providers/pact_broker_client_retrieve_pact_spec.rb +0 -109
- data/spec/service_providers/pact_broker_client_tags_spec.rb +0 -101
- data/spec/service_providers/pact_broker_client_versions_spec.rb +0 -113
- data/spec/service_providers/pact_helper.rb +0 -136
- data/spec/service_providers/pactflow_publish_provider_contract_spec.rb +0 -137
- data/spec/service_providers/pactflow_publish_provider_contract_the_old_way_spec.rb +0 -129
- data/spec/service_providers/pactflow_webhooks_create_spec.rb +0 -86
- data/spec/service_providers/pacticipants_create_spec.rb +0 -119
- data/spec/service_providers/publish_pacts_spec.rb +0 -114
- data/spec/service_providers/record_deployment_spec.rb +0 -199
- data/spec/service_providers/record_release_spec.rb +0 -130
- data/spec/service_providers/record_undeployment_spec.rb +0 -164
- data/spec/service_providers/webhooks_create_spec.rb +0 -391
- data/spec/spec_helper.rb +0 -68
- data/spec/support/approvals.rb +0 -26
- data/spec/support/cli_test_pacts/bar.json +0 -0
- data/spec/support/cli_test_pacts/foo.json +0 -0
- data/spec/support/latest_pacts_for_provider.json +0 -15
- data/spec/support/matrix.json +0 -35
- data/spec/support/matrix.txt +0 -3
- data/spec/support/matrix_error.txt +0 -3
- data/spec/support/matrix_with_results.txt +0 -10
- data/spec/support/pacticipant_get.json +0 -18
- data/spec/support/pacticipants_list.json +0 -26
- data/spec/support/pacts_latest_list.json +0 -41
- data/spec/support/shared_context.rb +0 -25
- data/spec/support/ssl_server.rb +0 -42
@@ -1,103 +0,0 @@
|
|
1
|
-
require "pact_broker/client/branches/delete_branch"
|
2
|
-
|
3
|
-
module PactBroker
|
4
|
-
module Client
|
5
|
-
module Branches
|
6
|
-
describe DeleteBranch do
|
7
|
-
before do
|
8
|
-
allow_any_instance_of(PactBroker::Client::Hal::HttpClient).to receive(:sleep)
|
9
|
-
allow_any_instance_of(PactBroker::Client::Hal::HttpClient).to receive(:default_max_tries).and_return(1)
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:params) do
|
13
|
-
{
|
14
|
-
pacticipant: "Foo",
|
15
|
-
branch: "main",
|
16
|
-
error_when_not_found: error_when_not_found
|
17
|
-
}
|
18
|
-
end
|
19
|
-
let(:options) do
|
20
|
-
{
|
21
|
-
verbose: verbose
|
22
|
-
}
|
23
|
-
end
|
24
|
-
let(:error_when_not_found) { true }
|
25
|
-
let(:pact_broker_base_url) { "http://example.org" }
|
26
|
-
let(:pact_broker_client_options) { { pact_broker_base_url: pact_broker_base_url } }
|
27
|
-
let(:response_headers) { { "Content-Type" => "application/hal+json"} }
|
28
|
-
let(:verbose) { false }
|
29
|
-
|
30
|
-
before do
|
31
|
-
stub_request(:get, "http://example.org/").to_return(status: 200, body: index_response_body, headers: response_headers)
|
32
|
-
stub_request(:delete, "http://example.org/pacticipants/Foo/branches/main").to_return(status: delete_response_status, body: delete_response_body, headers: response_headers)
|
33
|
-
end
|
34
|
-
let(:delete_response_status) { 200 }
|
35
|
-
|
36
|
-
let(:index_response_body) do
|
37
|
-
{
|
38
|
-
"_links" => {
|
39
|
-
"pb:pacticipant-branch" => {
|
40
|
-
"href" => "http://example.org/pacticipants/{pacticipant}/branches/{branch}"
|
41
|
-
}
|
42
|
-
}
|
43
|
-
}.to_json
|
44
|
-
end
|
45
|
-
|
46
|
-
let(:delete_response_body) do
|
47
|
-
{ "some" => "error message" }.to_json
|
48
|
-
end
|
49
|
-
|
50
|
-
subject { DeleteBranch.call(params, options, pact_broker_client_options) }
|
51
|
-
|
52
|
-
context "when the branch is deleted" do
|
53
|
-
it "returns a success result" do
|
54
|
-
expect(subject.success).to be true
|
55
|
-
expect(subject.message).to include "Successfully deleted branch main of pacticipant Foo"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context "when there is a non-404 error" do
|
60
|
-
let(:delete_response_status) { 403 }
|
61
|
-
|
62
|
-
it "returns an error result with the response body" do
|
63
|
-
expect(subject.success).to be false
|
64
|
-
expect(subject.message).to include "error message"
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context "when the branch is not found" do
|
69
|
-
let(:delete_response_status) { 404 }
|
70
|
-
|
71
|
-
context "when error_when_not_found is true" do
|
72
|
-
it "returns an error" do
|
73
|
-
expect(subject.success).to be false
|
74
|
-
expect(subject.message).to include "Could not delete branch main of pacticipant Foo as it was not found"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context "when error_when_not_found is false" do
|
79
|
-
let(:error_when_not_found) { false }
|
80
|
-
|
81
|
-
it "return a success" do
|
82
|
-
expect(subject.success).to be true
|
83
|
-
expect(subject.message).to include "Branch main of pacticipant Foo not found"
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
context "when deleting branches is not supported" do
|
89
|
-
let(:index_response_body) do
|
90
|
-
{
|
91
|
-
_links: {}
|
92
|
-
}.to_json
|
93
|
-
end
|
94
|
-
|
95
|
-
it "returns an error" do
|
96
|
-
expect(subject.success).to be false
|
97
|
-
expect(subject.message).to include "not support"
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
@@ -1,250 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/can_i_deploy'
|
2
|
-
require 'pact_broker/client/matrix/resource'
|
3
|
-
|
4
|
-
module PactBroker
|
5
|
-
module Client
|
6
|
-
describe CanIDeploy do
|
7
|
-
let(:pact_broker_base_url) { 'http://example.org' }
|
8
|
-
let(:version_selectors) { [{ pacticipant: "Foo", version: "1" }] }
|
9
|
-
let(:matrix_options) { { } }
|
10
|
-
let(:pact_broker_client_options) { { pact_broker_base_url: pact_broker_base_url, foo: 'bar' } }
|
11
|
-
let(:dry_run) { false }
|
12
|
-
let(:matrix_client) { instance_double('PactBroker::Client::Matrix') }
|
13
|
-
let(:matrix) do
|
14
|
-
instance_double('Matrix::Resource',
|
15
|
-
deployable?: deployable,
|
16
|
-
reason: 'some reason',
|
17
|
-
any_unknown?: any_unknown,
|
18
|
-
supports_unknown_count?: supports_unknown_count,
|
19
|
-
supports_ignore?: supports_ignore,
|
20
|
-
unknown_count: unknown_count,
|
21
|
-
notices: notices)
|
22
|
-
end
|
23
|
-
let(:unknown_count) { 0 }
|
24
|
-
let(:any_unknown) { unknown_count > 0 }
|
25
|
-
let(:supports_unknown_count) { true }
|
26
|
-
let(:retry_while_unknown) { 0 }
|
27
|
-
let(:options) { { output: 'text', retry_while_unknown: retry_while_unknown, retry_interval: 5, dry_run: dry_run } }
|
28
|
-
let(:notices) { nil }
|
29
|
-
let(:supports_ignore) { true }
|
30
|
-
let(:deployable) { true }
|
31
|
-
|
32
|
-
|
33
|
-
before do
|
34
|
-
allow(PactBroker::Client::Matrix::Query).to receive(:call).and_return(matrix)
|
35
|
-
allow(Matrix::Formatter).to receive(:call).and_return('text matrix')
|
36
|
-
end
|
37
|
-
|
38
|
-
subject { CanIDeploy.call(version_selectors, matrix_options, options, pact_broker_client_options) }
|
39
|
-
|
40
|
-
it "retrieves the matrix from the pact broker" do
|
41
|
-
expect(PactBroker::Client::Matrix::Query).to receive(:call).with({ selectors: version_selectors, matrix_options: matrix_options }, options, pact_broker_client_options)
|
42
|
-
subject
|
43
|
-
end
|
44
|
-
|
45
|
-
it "creates a text table out of the matrix" do
|
46
|
-
expect(Matrix::Formatter).to receive(:call).with(matrix, 'text')
|
47
|
-
subject
|
48
|
-
end
|
49
|
-
|
50
|
-
context "when the versions are deployable" do
|
51
|
-
it "returns a success response" do
|
52
|
-
expect(subject.success).to be true
|
53
|
-
end
|
54
|
-
|
55
|
-
it "returns a success message with the text table" do
|
56
|
-
expect(subject.message).to include "Computer says yes"
|
57
|
-
expect(subject.message).to include "\n\ntext matrix"
|
58
|
-
end
|
59
|
-
|
60
|
-
it "returns a success reason" do
|
61
|
-
expect(subject.message).to include "some reason"
|
62
|
-
end
|
63
|
-
|
64
|
-
context "when there are notices" do
|
65
|
-
let(:notices) { [Notice.new(text: "some notice", type: "info")] }
|
66
|
-
|
67
|
-
it "returns the notices instead of the reason" do
|
68
|
-
expect(subject.message).to_not include "some reason"
|
69
|
-
expect(subject.message).to include "some notice"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "when dry_run is enabled" do
|
74
|
-
let(:dry_run) { true }
|
75
|
-
|
76
|
-
it "prefixes each line with [dry-run]" do
|
77
|
-
Approvals.verify(subject.message, :name => "can_i_deploy_success_dry_run", format: :txt)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
context "when the versions are not deployable" do
|
83
|
-
let(:matrix) { instance_double('Matrix::Resource', deployable?: false, reason: 'some reason', any_unknown?: false, notices: notices) }
|
84
|
-
|
85
|
-
it "returns a failure response" do
|
86
|
-
expect(subject.success).to be false
|
87
|
-
end
|
88
|
-
|
89
|
-
it "returns a failure message" do
|
90
|
-
expect(subject.message).to include "Computer says no"
|
91
|
-
end
|
92
|
-
|
93
|
-
it "returns a failure reason" do
|
94
|
-
expect(subject.message).to include "some reason"
|
95
|
-
end
|
96
|
-
|
97
|
-
context "when there are notices" do
|
98
|
-
let(:notices) { [Notice.new(text: "some notice", type: "info")] }
|
99
|
-
|
100
|
-
it "returns the notices instead of the reason" do
|
101
|
-
expect(subject.message).to_not include "some reason"
|
102
|
-
expect(subject.message).to include "some notice"
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
context "when dry_run is enabled" do
|
107
|
-
let(:dry_run) { true }
|
108
|
-
|
109
|
-
it "returns a success response" do
|
110
|
-
expect(subject.success).to be true
|
111
|
-
end
|
112
|
-
|
113
|
-
it "prefixes each line with [dry-run]" do
|
114
|
-
Approvals.verify(subject.message, :name => "can_i_deploy_failure_dry_run", format: :txt)
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context "when retry_while_unknown is greater than 0" do
|
120
|
-
let(:retry_while_unknown) { 1 }
|
121
|
-
|
122
|
-
context "when any_unknown? is false" do
|
123
|
-
it "does not retry the request" do
|
124
|
-
expect(Retry).to_not receive(:until_truthy_or_max_times)
|
125
|
-
subject
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
context "when any_unknown? is true" do
|
130
|
-
before do
|
131
|
-
allow($stderr).to receive(:puts)
|
132
|
-
allow(Retry).to receive(:until_truthy_or_max_times)
|
133
|
-
end
|
134
|
-
|
135
|
-
let(:unknown_count) { 1 }
|
136
|
-
|
137
|
-
it "puts a message to stderr" do
|
138
|
-
expect($stderr).to receive(:puts).with("Waiting for 1 verification result to be published (maximum of 5 seconds)")
|
139
|
-
subject
|
140
|
-
end
|
141
|
-
|
142
|
-
it "retries the request" do
|
143
|
-
expect(Retry).to receive(:until_truthy_or_max_times).with(hash_including(times: 1, sleep: 5, sleep_first: true))
|
144
|
-
subject
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
context "when the matrix does not support the unknown count" do
|
149
|
-
let(:supports_unknown_count) { false }
|
150
|
-
|
151
|
-
it "returns a failure response" do
|
152
|
-
expect(subject.success).to be false
|
153
|
-
end
|
154
|
-
|
155
|
-
it "returns a failure message" do
|
156
|
-
expect(subject.message).to match /does not provide a count/
|
157
|
-
end
|
158
|
-
|
159
|
-
context "when dry_run is enabled" do
|
160
|
-
let(:dry_run) { true }
|
161
|
-
|
162
|
-
it "returns a success response" do
|
163
|
-
expect(subject.success).to be true
|
164
|
-
end
|
165
|
-
|
166
|
-
it "returns a failure message" do
|
167
|
-
expect(subject.message).to include "[dry-run]"
|
168
|
-
expect(subject.message).to match /does not provide a count/
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
context "when there are ignore selectors but the matrix does not support ignoring" do
|
175
|
-
let(:matrix_options) { { ignore_selectors: [{ pacticipant_name: "Foo" }]} }
|
176
|
-
let(:supports_ignore) { false }
|
177
|
-
|
178
|
-
context "when deployable" do
|
179
|
-
it "returns a warning" do
|
180
|
-
expect(subject.message).to include "does not support"
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
context "when not deployable" do
|
185
|
-
let(:deployable) { false }
|
186
|
-
|
187
|
-
it "returns a warning" do
|
188
|
-
expect(subject.message).to include "does not support"
|
189
|
-
end
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
context "when a PactBroker::Client::Error is raised" do
|
194
|
-
before do
|
195
|
-
allow(PactBroker::Client::Matrix::Query).to receive(:call).and_raise(PactBroker::Client::Error.new('error text'))
|
196
|
-
end
|
197
|
-
|
198
|
-
it "returns a failure response" do
|
199
|
-
expect(subject.success).to be false
|
200
|
-
end
|
201
|
-
|
202
|
-
it "returns a failure message" do
|
203
|
-
expect(subject.message).to include "error text"
|
204
|
-
end
|
205
|
-
|
206
|
-
context "when dry_run is enabled" do
|
207
|
-
let(:dry_run) { true }
|
208
|
-
|
209
|
-
it "returns a success response" do
|
210
|
-
expect(subject.success).to be true
|
211
|
-
end
|
212
|
-
|
213
|
-
it "returns a failure message" do
|
214
|
-
expect(subject.message).to include "[dry-run]"
|
215
|
-
expect(subject.message).to match /error text/
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
context "when a StandardError is raised" do
|
221
|
-
before do
|
222
|
-
allow(Retry).to receive(:while_error) { |&block| block.call }
|
223
|
-
allow($stderr).to receive(:puts)
|
224
|
-
allow(PactBroker::Client::Matrix::Query).to receive(:call).and_raise(StandardError.new('error text'))
|
225
|
-
end
|
226
|
-
|
227
|
-
it "returns a failure response" do
|
228
|
-
expect(subject.success).to be false
|
229
|
-
end
|
230
|
-
|
231
|
-
it "returns a failure message and backtrace" do
|
232
|
-
expect(subject.message).to include "Error retrieving matrix. StandardError - error text"
|
233
|
-
end
|
234
|
-
|
235
|
-
context "when dry_run is enabled" do
|
236
|
-
let(:dry_run) { true }
|
237
|
-
|
238
|
-
it "returns a success response" do
|
239
|
-
expect(subject.success).to be true
|
240
|
-
end
|
241
|
-
|
242
|
-
it "returns a failure message" do
|
243
|
-
expect(subject.message).to include "[dry-run]"
|
244
|
-
expect(subject.message).to match /error text/
|
245
|
-
end
|
246
|
-
end
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
@@ -1,196 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/cli/broker'
|
2
|
-
require 'pact_broker/client/cli/version_selector_options_parser'
|
3
|
-
require 'pact_broker/client/can_i_deploy'
|
4
|
-
require 'ostruct'
|
5
|
-
|
6
|
-
module PactBroker
|
7
|
-
module Client
|
8
|
-
module CLI
|
9
|
-
describe Broker do
|
10
|
-
before do
|
11
|
-
subject.options = OpenStruct.new(minimum_valid_options)
|
12
|
-
allow(VersionSelectorOptionsParser).to receive(:call).and_return(version_selectors)
|
13
|
-
allow(CanIDeploy).to receive(:call).and_return(result)
|
14
|
-
allow($stdout).to receive(:puts)
|
15
|
-
allow($stderr).to receive(:puts)
|
16
|
-
end
|
17
|
-
|
18
|
-
let(:result) { instance_double('PactBroker::Client::CanIDeploy::Result', success: success, message: message) }
|
19
|
-
let(:success) { true }
|
20
|
-
let(:message) { 'message' }
|
21
|
-
let(:version_selectors) { [{pacticipant: "Foo", version: "1"}] }
|
22
|
-
let(:minimum_valid_options) do
|
23
|
-
{
|
24
|
-
broker_base_url: 'http://pact-broker',
|
25
|
-
output: 'table',
|
26
|
-
verbose: 'verbose',
|
27
|
-
retry_while_unknown: 1,
|
28
|
-
retry_interval: 2,
|
29
|
-
limit: 1000,
|
30
|
-
dry_run: false
|
31
|
-
}
|
32
|
-
end
|
33
|
-
|
34
|
-
let(:invoke_can_i_deploy) { subject.can_i_deploy }
|
35
|
-
|
36
|
-
it "parses the pacticipant names and versions" do
|
37
|
-
expect(VersionSelectorOptionsParser).to receive(:call).with(ARGV)
|
38
|
-
invoke_can_i_deploy
|
39
|
-
end
|
40
|
-
|
41
|
-
it "invokes the CanIDeploy service" do
|
42
|
-
expect(CanIDeploy).to receive(:call).with(version_selectors, { to_tag: nil, to_environment: nil, limit: 1000, ignore_selectors: []}, {output: 'table', retry_while_unknown: 1, retry_interval: 2, dry_run: false, verbose: "verbose"}, { pact_broker_base_url: 'http://pact-broker', verbose: 'verbose' })
|
43
|
-
invoke_can_i_deploy
|
44
|
-
end
|
45
|
-
|
46
|
-
context "with a missing --version and --latest" do
|
47
|
-
let(:version_selectors) { [{pacticipant: "Foo", version: nil}] }
|
48
|
-
|
49
|
-
it "raises an error" do
|
50
|
-
expect { invoke_can_i_deploy }.to raise_error Thor::RequiredArgumentMissingError, /The version must be specified/
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
context "with --to" do
|
55
|
-
before do
|
56
|
-
subject.options.to = 'prod'
|
57
|
-
end
|
58
|
-
|
59
|
-
it "passes the value as the matrix options" do
|
60
|
-
expect(CanIDeploy).to receive(:call).with(anything, {to_tag: 'prod', to_environment: nil, limit: 1000, ignore_selectors: []}, anything, anything)
|
61
|
-
invoke_can_i_deploy
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
context "with --to-environment" do
|
66
|
-
before do
|
67
|
-
subject.options.to_environment = 'prod'
|
68
|
-
end
|
69
|
-
|
70
|
-
it "passes the value as the matrix options" do
|
71
|
-
expect(CanIDeploy).to receive(:call).with(anything, {to_tag: nil, to_environment: 'prod', limit: 1000, ignore_selectors: []}, anything, anything)
|
72
|
-
invoke_can_i_deploy
|
73
|
-
end
|
74
|
-
|
75
|
-
context "when the environment is an empty string" do
|
76
|
-
before do
|
77
|
-
subject.options.to_environment = ' '
|
78
|
-
end
|
79
|
-
|
80
|
-
it "raises an error" do
|
81
|
-
expect { invoke_can_i_deploy }.to raise_error ::Thor::RequiredArgumentMissingError
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
context "with basic auth" do
|
87
|
-
before do
|
88
|
-
subject.options.broker_username = 'foo'
|
89
|
-
subject.options.broker_password = 'bar'
|
90
|
-
end
|
91
|
-
|
92
|
-
it "invokes the CanIDeploy service with the basic auth credentials" do
|
93
|
-
expect(CanIDeploy).to receive(:call).with(anything, anything, anything, { pact_broker_base_url: 'http://pact-broker', basic_auth: {username: "foo", password: "bar"}, verbose: 'verbose'})
|
94
|
-
invoke_can_i_deploy
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
context "with a bearer token" do
|
99
|
-
before do
|
100
|
-
subject.options.broker_token = "some token"
|
101
|
-
end
|
102
|
-
|
103
|
-
it "invokes the CanIDeploy service with the basic auth credentials" do
|
104
|
-
expect(CanIDeploy).to receive(:call).with(anything, anything, anything, {pact_broker_base_url: 'http://pact-broker', token: "some token", verbose: 'verbose'})
|
105
|
-
invoke_can_i_deploy
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
context "when PACT_BROKER_CAN_I_DEPLOY_DRY_RUN=true" do
|
110
|
-
before do
|
111
|
-
allow(ENV).to receive(:[]).and_call_original
|
112
|
-
allow(ENV).to receive(:[]).with("PACT_BROKER_CAN_I_DEPLOY_DRY_RUN").and_return("true")
|
113
|
-
end
|
114
|
-
|
115
|
-
it "invokes the CanIDeploy service with dry_run set to true" do
|
116
|
-
expect(CanIDeploy).to receive(:call).with(anything, anything, hash_including(dry_run: true), anything)
|
117
|
-
invoke_can_i_deploy
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
context "when PACT_BROKER_CAN_I_DEPLOY_IGNORE=Some Service" do
|
122
|
-
before do
|
123
|
-
allow(ENV).to receive(:fetch).and_call_original
|
124
|
-
allow(ENV).to receive(:fetch).with("PACT_BROKER_CAN_I_DEPLOY_IGNORE", "").and_return("Some Service, Some Other Service")
|
125
|
-
end
|
126
|
-
|
127
|
-
it "invokes the CanIDeploy service with ignore selectors" do
|
128
|
-
expect(CanIDeploy).to receive(:call).with(anything, hash_including(ignore_selectors: [ { pacticipant: "Some Service" }, { pacticipant: "Some Other Service" } ]), anything, anything)
|
129
|
-
invoke_can_i_deploy
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
context "when successful" do
|
134
|
-
it "prints the message to stdout" do
|
135
|
-
expect($stdout).to receive(:puts).with(message)
|
136
|
-
invoke_can_i_deploy
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
context "when not successful" do
|
141
|
-
let(:success) { false }
|
142
|
-
|
143
|
-
it "prints the message to stderr" do
|
144
|
-
expect($stdout).to receive(:puts).with(message)
|
145
|
-
begin
|
146
|
-
invoke_can_i_deploy
|
147
|
-
rescue SystemExit
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
it "exits with code 1" do
|
152
|
-
exited_explicitly = false
|
153
|
-
exited_explicitlyerror = nil
|
154
|
-
begin
|
155
|
-
invoke_can_i_deploy
|
156
|
-
rescue SystemExit => e
|
157
|
-
exited_explicitly = true
|
158
|
-
error = e
|
159
|
-
end
|
160
|
-
expect(exited_explicitly).to be true
|
161
|
-
expect(error.status).to be 1
|
162
|
-
end
|
163
|
-
|
164
|
-
context "when an exit status is specified" do
|
165
|
-
before do
|
166
|
-
allow(ENV).to receive(:fetch).and_call_original
|
167
|
-
allow(ENV).to receive(:fetch).with('PACT_BROKER_CAN_I_DEPLOY_EXIT_CODE_BETA', '').and_return("0")
|
168
|
-
end
|
169
|
-
|
170
|
-
it "exits with the specified code" do
|
171
|
-
exited_explicitly = false
|
172
|
-
error = nil
|
173
|
-
begin
|
174
|
-
invoke_can_i_deploy
|
175
|
-
rescue SystemExit => e
|
176
|
-
exited_explicitly = true
|
177
|
-
error = e
|
178
|
-
end
|
179
|
-
expect(exited_explicitly).to be true
|
180
|
-
expect(error.status).to be 0
|
181
|
-
end
|
182
|
-
|
183
|
-
it "prints the configured exit code" do
|
184
|
-
expect($stderr).to receive(:puts).with("Exiting can-i-deploy with configured exit code 0")
|
185
|
-
expect($stdout).to receive(:puts).with(message)
|
186
|
-
begin
|
187
|
-
invoke_can_i_deploy
|
188
|
-
rescue SystemExit
|
189
|
-
end
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/cli/broker'
|
2
|
-
require 'pact_broker/client/webhooks/create'
|
3
|
-
|
4
|
-
module PactBroker
|
5
|
-
module Client
|
6
|
-
module CLI
|
7
|
-
describe Broker do
|
8
|
-
describe "create_or_update_webhook" do
|
9
|
-
|
10
|
-
let(:broker) { Broker.new }
|
11
|
-
|
12
|
-
subject { broker.create_or_update_webhook "http://webhook" }
|
13
|
-
|
14
|
-
it "calls PactBroker::Client::Webhooks::Create with the webhook params" do
|
15
|
-
expect(broker).to receive(:run_webhook_commands).with("http://webhook")
|
16
|
-
|
17
|
-
subject
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/cli/broker'
|
2
|
-
require 'pact_broker/client/webhooks/create'
|
3
|
-
|
4
|
-
module PactBroker
|
5
|
-
module Client
|
6
|
-
module CLI
|
7
|
-
describe Broker do
|
8
|
-
describe "create_webhook" do
|
9
|
-
|
10
|
-
let(:broker) { Broker.new }
|
11
|
-
|
12
|
-
subject { broker.create_webhook "http://webhook" }
|
13
|
-
|
14
|
-
it "calls PactBroker::Client::Webhooks::Create with the webhook params" do
|
15
|
-
expect(broker).to receive(:run_webhook_commands).with("http://webhook")
|
16
|
-
|
17
|
-
subject
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|