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,167 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/environments/update_environment'
|
2
|
-
|
3
|
-
module PactBroker
|
4
|
-
module Client
|
5
|
-
module Environments
|
6
|
-
describe UpdateEnvironment 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
|
-
uuid: uuid,
|
15
|
-
name: "new name",
|
16
|
-
display_name: "new display name",
|
17
|
-
production: false
|
18
|
-
}
|
19
|
-
end
|
20
|
-
let(:options) do
|
21
|
-
{
|
22
|
-
output: output,
|
23
|
-
verbose: verbose
|
24
|
-
}
|
25
|
-
end
|
26
|
-
let(:uuid) { "a9aa4c22-66bb-45d3-ba4c-4916ac8b48c5" }
|
27
|
-
let(:pact_broker_base_url) { "http://example.org" }
|
28
|
-
let(:pact_broker_client_options) { { pact_broker_base_url: pact_broker_base_url } }
|
29
|
-
let(:response_headers) { { "Content-Type" => "application/hal+json"} }
|
30
|
-
let(:output) { "text" }
|
31
|
-
let(:verbose) { false }
|
32
|
-
|
33
|
-
before do
|
34
|
-
stub_request(:get, "http://example.org/").to_return(status: 200, body: index_response_body, headers: response_headers)
|
35
|
-
stub_request(:get, "http://example.org/environments/#{uuid}").to_return(status: get_environment_response_status, body: get_environment_response_body, headers: response_headers)
|
36
|
-
stub_request(:put, "http://example.org/environments/#{uuid}").to_return(status: put_response_status, body: put_environment_response_body, headers: response_headers)
|
37
|
-
end
|
38
|
-
let(:put_response_status) { 200 }
|
39
|
-
let(:get_environment_response_status) { 200 }
|
40
|
-
let(:put_request_body) do
|
41
|
-
{
|
42
|
-
name: "new name",
|
43
|
-
displayName: "new display name",
|
44
|
-
production: false
|
45
|
-
}.to_json
|
46
|
-
end
|
47
|
-
|
48
|
-
let(:index_response_body) do
|
49
|
-
{
|
50
|
-
"_links" => {
|
51
|
-
"pb:environments" => {},
|
52
|
-
"pb:environment" => {
|
53
|
-
"href" => "http://example.org/environments/{uuid}"
|
54
|
-
}
|
55
|
-
}
|
56
|
-
}.to_json
|
57
|
-
end
|
58
|
-
|
59
|
-
let(:get_environment_response_body) do
|
60
|
-
{
|
61
|
-
name: "existing name",
|
62
|
-
displayName: "existing display name",
|
63
|
-
production: true
|
64
|
-
}.to_json
|
65
|
-
end
|
66
|
-
|
67
|
-
let(:put_environment_response_body) do
|
68
|
-
JSON.parse(get_environment_response_body).merge("updatedAt" => "2021-05-28T13:34:54+10:00").to_json
|
69
|
-
end
|
70
|
-
|
71
|
-
subject { UpdateEnvironment.call(params, options, pact_broker_client_options) }
|
72
|
-
|
73
|
-
it "updates the environment" do
|
74
|
-
request = stub_request(:put, "http://example.org/environments/#{uuid}").with(body: put_request_body)
|
75
|
-
subject
|
76
|
-
expect(request).to have_been_made
|
77
|
-
end
|
78
|
-
|
79
|
-
context "when update is successful" do
|
80
|
-
its(:success) { is_expected.to be true }
|
81
|
-
its(:message) { is_expected.to include "Updated new name environment in the Pact Broker" }
|
82
|
-
|
83
|
-
context "when output is json" do
|
84
|
-
let(:output) { "json" }
|
85
|
-
|
86
|
-
its(:message) { is_expected.to eq put_environment_response_body }
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
context "when environments are not supported" do
|
91
|
-
let(:index_response_body) { "{}" }
|
92
|
-
|
93
|
-
its(:success) { is_expected.to be false }
|
94
|
-
its(:message) { is_expected.to include "does not support environments" }
|
95
|
-
end
|
96
|
-
|
97
|
-
context "when a StandardError occurs" do
|
98
|
-
before do
|
99
|
-
allow_any_instance_of(described_class).to receive(:do_call).and_raise(StandardError.new("Foo"))
|
100
|
-
end
|
101
|
-
|
102
|
-
its(:success) { is_expected.to be false }
|
103
|
-
its(:message) { is_expected.to include "StandardError - Foo" }
|
104
|
-
|
105
|
-
context "when verbose is on" do
|
106
|
-
let(:verbose) { true }
|
107
|
-
|
108
|
-
it "includes the message and class and backtrace in the error" do
|
109
|
-
expect(subject.message.split("\n").size).to be > 2
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
context "when output is json" do
|
114
|
-
let(:output) { "json" }
|
115
|
-
|
116
|
-
it "includes the message and class in the error" do
|
117
|
-
message_hash = JSON.parse(subject.message)
|
118
|
-
expect(message_hash).to eq "error" => { "message" => "Foo", "class" => "StandardError" }
|
119
|
-
end
|
120
|
-
|
121
|
-
context "when verbose is on" do
|
122
|
-
let(:verbose) { true }
|
123
|
-
|
124
|
-
it "includes the message and class and backtrace in the error" do
|
125
|
-
message_hash = JSON.parse(subject.message)
|
126
|
-
expect(message_hash["error"]["backtrace"]).to be_a(Array)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
context "when the environment does not exist" do
|
133
|
-
let(:get_environment_response_status) { 404 }
|
134
|
-
let(:get_environment_response_body) { "" }
|
135
|
-
let(:put_environment_response_body) { "" }
|
136
|
-
|
137
|
-
its(:success) { is_expected.to be false }
|
138
|
-
its(:message) { is_expected.to include get_environment_response_body }
|
139
|
-
|
140
|
-
context "when output is json" do
|
141
|
-
let(:output) { "json" }
|
142
|
-
|
143
|
-
its(:message) { is_expected.to eq "{}" }
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
context "when update is unsuccessful" do
|
148
|
-
let(:put_response_status) { 400 }
|
149
|
-
let(:put_environment_response_body) do
|
150
|
-
{
|
151
|
-
"some" => "error"
|
152
|
-
}.to_json
|
153
|
-
end
|
154
|
-
|
155
|
-
its(:success) { is_expected.to be false }
|
156
|
-
its(:message) { is_expected.to include put_environment_response_body }
|
157
|
-
|
158
|
-
context "when output is json" do
|
159
|
-
let(:output) { "json" }
|
160
|
-
|
161
|
-
its(:message) { is_expected.to eq put_environment_response_body }
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|
167
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/generate_display_name'
|
2
|
-
|
3
|
-
module PactBroker
|
4
|
-
module Client
|
5
|
-
describe GenerateDisplayName do
|
6
|
-
describe ".call" do
|
7
|
-
TEST_CASES = {
|
8
|
-
"foo" => "Foo",
|
9
|
-
"MyService" => "My Service",
|
10
|
-
"my-service" => "My Service",
|
11
|
-
"my_service" => "My Service",
|
12
|
-
"my service" => "My Service",
|
13
|
-
"ABCService" => "ABC Service",
|
14
|
-
"A4Service" => "A4 Service",
|
15
|
-
"SNSPactEventConsumer" => "SNS Pact Event Consumer",
|
16
|
-
"AWSSummiteerWeb" => "AWS Summiteer Web",
|
17
|
-
"Beer-Consumer" => "Beer Consumer",
|
18
|
-
"foo.pretend-consumer" => "Foo Pretend Consumer",
|
19
|
-
"Client-XX" => "Client XX",
|
20
|
-
"providerJSWorkshop" => "Provider JS Workshop",
|
21
|
-
"e2e Provider Example" => "E2e Provider Example",
|
22
|
-
"MP - Our Provider" => "MP - Our Provider",
|
23
|
-
"PoC - Pact-broker-consumer" => "PoC - Pact Broker Consumer",
|
24
|
-
"QB-DATABASE Service" => "QB DATABASE Service",
|
25
|
-
"Support Species App (Provider)" => "Support Species App (Provider)",
|
26
|
-
9 => "9",
|
27
|
-
"" => "",
|
28
|
-
nil => nil
|
29
|
-
}
|
30
|
-
|
31
|
-
TEST_CASES.each do | name, expected_display_name |
|
32
|
-
it "converts #{name.inspect} to #{expected_display_name.inspect}" do
|
33
|
-
expect(GenerateDisplayName.call(name)).to eq expected_display_name
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,159 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/git'
|
2
|
-
|
3
|
-
module PactBroker
|
4
|
-
module Client
|
5
|
-
module Git
|
6
|
-
describe ".branch" do
|
7
|
-
before do
|
8
|
-
allow(ENV).to receive(:[]).and_call_original
|
9
|
-
Git::BRANCH_ENV_VAR_NAMES.each do | env_var_name|
|
10
|
-
allow(ENV).to receive(:[]).with(env_var_name).and_return(nil)
|
11
|
-
end
|
12
|
-
allow(Git).to receive(:execute_git_command).and_return(" origin/HEAD \n origin/foo")
|
13
|
-
end
|
14
|
-
|
15
|
-
let(:raise_exception) { true }
|
16
|
-
|
17
|
-
subject { Git.branch(raise_error: raise_exception) }
|
18
|
-
|
19
|
-
shared_examples_for "when raise_error is false" do
|
20
|
-
context "when raise_error is false" do
|
21
|
-
let(:raise_exception) { false }
|
22
|
-
|
23
|
-
it { is_expected.to be nil }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context "when there is a known environment variable for the branch" do
|
28
|
-
before do
|
29
|
-
allow(ENV).to receive(:[]).with("BUILDKITE_BRANCH").and_return("")
|
30
|
-
allow(ENV).to receive(:[]).with("TRAVIS_BRANCH").and_return("foo")
|
31
|
-
end
|
32
|
-
|
33
|
-
it "returns the value of the environment variable" do
|
34
|
-
expect(subject).to eq "foo"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "when the branch starts with refs/heads/" do
|
39
|
-
before do
|
40
|
-
allow(ENV).to receive(:[]).with("GITHUB_REF").and_return("refs/heads/feature-x")
|
41
|
-
end
|
42
|
-
|
43
|
-
it "trims off the refs/heads/" do
|
44
|
-
expect(subject).to eq "feature-x"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "when there is one environment variable ending with _BRANCH" do
|
49
|
-
before do
|
50
|
-
allow(ENV).to receive(:keys).and_return(%w{FOO_BRANCH BAR_BRANCH BLAH})
|
51
|
-
allow(ENV).to receive(:[]).with("FOO_BRANCH").and_return("")
|
52
|
-
allow(ENV).to receive(:[]).with("BAR_BRANCH").and_return("meep")
|
53
|
-
end
|
54
|
-
|
55
|
-
it "returns the value of that environment variable" do
|
56
|
-
expect(subject).to eq "meep"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "when there is more than one environment variable ending with _BRANCH" do
|
61
|
-
it "attempts to execute a git command to determine the value" do
|
62
|
-
expect(Git).to receive(:execute_git_command)
|
63
|
-
expect(subject).to_not be_empty
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context "when there is no known environment variable for the branch", skip_ci: true do
|
68
|
-
it "attempts to execute a git command to determine the value" do
|
69
|
-
expect(Git).to receive(:execute_git_command)
|
70
|
-
expect(subject).to_not be_empty
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
context "when one git branch name is returned (apart from HEAD)" do
|
75
|
-
before do
|
76
|
-
allow(Git).to receive(:execute_git_command).and_return(" origin/HEAD \n origin/foo")
|
77
|
-
end
|
78
|
-
|
79
|
-
it "returns the branch" do
|
80
|
-
expect(subject).to eq "foo"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
context "when two git branch names are returned (apart from HEAD)" do
|
85
|
-
before do
|
86
|
-
allow(Git).to receive(:execute_git_command).and_return(" origin/HEAD \n origin/foo \n origin/bar")
|
87
|
-
end
|
88
|
-
|
89
|
-
it "raises an error" do
|
90
|
-
expect { subject }.to raise_error PactBroker::Client::Error, /returned multiple branches: foo, bar/
|
91
|
-
end
|
92
|
-
|
93
|
-
include_examples "when raise_error is false"
|
94
|
-
end
|
95
|
-
|
96
|
-
|
97
|
-
context "when the git branch name comes back as an empty string" do
|
98
|
-
before do
|
99
|
-
allow(Git).to receive(:execute_git_command).and_return(" origin/HEAD")
|
100
|
-
end
|
101
|
-
|
102
|
-
it "raises an error" do
|
103
|
-
expect { subject }.to raise_error PactBroker::Client::Error, /didn't return anything/
|
104
|
-
end
|
105
|
-
|
106
|
-
include_examples "when raise_error is false"
|
107
|
-
end
|
108
|
-
|
109
|
-
context "when there is an error executing the git command" do
|
110
|
-
before do
|
111
|
-
allow(Git).to receive(:execute_git_command).and_raise("some error")
|
112
|
-
end
|
113
|
-
|
114
|
-
it "raises an error" do
|
115
|
-
expect { subject }.to raise_error PactBroker::Client::Error, /some error/
|
116
|
-
end
|
117
|
-
|
118
|
-
include_examples "when raise_error is false"
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
describe ".build_url" do
|
123
|
-
before do
|
124
|
-
allow(ENV).to receive(:[]).and_call_original
|
125
|
-
end
|
126
|
-
|
127
|
-
subject { Git.build_url }
|
128
|
-
|
129
|
-
context "when nothing is set" do
|
130
|
-
before do
|
131
|
-
allow(ENV).to receive(:[]).and_return(nil)
|
132
|
-
end
|
133
|
-
|
134
|
-
it { is_expected.to eq nil }
|
135
|
-
end
|
136
|
-
|
137
|
-
context "when BUILDKITE_BUILD_URL is set" do
|
138
|
-
before do
|
139
|
-
allow(ENV).to receive(:[]).and_return(nil)
|
140
|
-
allow(ENV).to receive(:[]).with("BUILDKITE_BUILD_URL").and_return("http://build")
|
141
|
-
end
|
142
|
-
|
143
|
-
it { is_expected.to eq "http://build" }
|
144
|
-
end
|
145
|
-
|
146
|
-
context "when the Github Actions env vars are set" do
|
147
|
-
before do
|
148
|
-
allow(ENV).to receive(:[]).and_return(nil)
|
149
|
-
allow(ENV).to receive(:[]).with("GITHUB_SERVER_URL").and_return("https://github.com")
|
150
|
-
allow(ENV).to receive(:[]).with("GITHUB_REPOSITORY").and_return("org/repo")
|
151
|
-
allow(ENV).to receive(:[]).with("GITHUB_RUN_ID").and_return("1")
|
152
|
-
end
|
153
|
-
|
154
|
-
it { is_expected.to eq "https://github.com/org/repo/actions/runs/1" }
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/hal/authorization_header_redactor'
|
2
|
-
|
3
|
-
module PactBroker
|
4
|
-
module Client
|
5
|
-
module Hal
|
6
|
-
describe AuthorizationHeaderRedactor do
|
7
|
-
let(:stream) { StringIO.new }
|
8
|
-
let(:stream_redactor) { AuthorizationHeaderRedactor.new(stream) }
|
9
|
-
|
10
|
-
it "redacts the authorizaton header" do
|
11
|
-
stream_redactor << "\\r\\nAuthorization: Bearer TOKEN\\r\\n"
|
12
|
-
expect(stream.string).to eq "\\r\\nAuthorization: [redacted]\\r\\n"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,149 +0,0 @@
|
|
1
|
-
require 'pact_broker/client/hal/entity'
|
2
|
-
require 'pact_broker/client/hal/http_client'
|
3
|
-
|
4
|
-
module PactBroker::Client
|
5
|
-
module Hal
|
6
|
-
describe Entity do
|
7
|
-
let(:http_client) do
|
8
|
-
instance_double('Pact::Hal::HttpClient', post: provider_response)
|
9
|
-
end
|
10
|
-
|
11
|
-
let(:provider_response) do
|
12
|
-
double('response', body: provider_hash, success?: true, status: status)
|
13
|
-
end
|
14
|
-
let(:status) { 200 }
|
15
|
-
|
16
|
-
let(:provider_hash) do
|
17
|
-
{
|
18
|
-
"name" => "Provider"
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
let(:pact_hash) do
|
23
|
-
{
|
24
|
-
"name" => "a name",
|
25
|
-
|
26
|
-
"_links" => {
|
27
|
-
"pb:provider" => {
|
28
|
-
"href" => "http://provider"
|
29
|
-
},
|
30
|
-
"pb:version-tag" => {
|
31
|
-
"href" => "http://provider/version/{version}/tag/{tag}"
|
32
|
-
}
|
33
|
-
}
|
34
|
-
}
|
35
|
-
end
|
36
|
-
|
37
|
-
subject(:entity) { Entity.new("http://pact", pact_hash, http_client) }
|
38
|
-
|
39
|
-
it "delegates to the properties in the data" do
|
40
|
-
expect(subject.name).to eq "a name"
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "post" do
|
44
|
-
let(:post_provider) { entity.post("pb:provider", {'some' => 'data'} ) }
|
45
|
-
|
46
|
-
it "executes an http request" do
|
47
|
-
expect(http_client).to receive(:post).with("http://provider", '{"some":"data"}', {})
|
48
|
-
post_provider
|
49
|
-
end
|
50
|
-
|
51
|
-
it "returns the entity for the relation" do
|
52
|
-
expect(post_provider).to be_a(Entity)
|
53
|
-
end
|
54
|
-
|
55
|
-
context "with template params" do
|
56
|
-
let(:post_provider) { entity._link("pb:version-tag").expand(version: "1", tag: "prod").post({'some' => 'data'} ) }
|
57
|
-
|
58
|
-
it "posts to the expanded URL" do
|
59
|
-
expect(http_client).to receive(:post).with("http://provider/version/1/tag/prod", '{"some":"data"}', {})
|
60
|
-
post_provider
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "assert_success!" do
|
66
|
-
context "when the response is successful" do
|
67
|
-
it "returns the entity" do
|
68
|
-
expect(entity.assert_success!).to be entity
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
context "when the response is not successful and there is no response" do
|
73
|
-
subject(:entity) { ErrorEntity.new("http://pact", pact_hash, http_client) }
|
74
|
-
|
75
|
-
it "raises an error" do
|
76
|
-
expect { entity.assert_success! }.to raise_error ErrorResponseReturned, "Error making request to http://pact status="
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context "when the response is not successful and there is a response" do
|
81
|
-
let(:response) { double('response', status: 200, raw_body: "body") }
|
82
|
-
|
83
|
-
subject(:entity) { ErrorEntity.new("http://pact", pact_hash, http_client, response) }
|
84
|
-
|
85
|
-
it "raises an error" do
|
86
|
-
expect { entity.assert_success! }.to raise_error ErrorResponseReturned, "Error making request to http://pact status=200 body"
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
describe "can?" do
|
92
|
-
context "when the relation exists" do
|
93
|
-
it "returns true" do
|
94
|
-
expect(subject.can?('pb:provider')).to be true
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
context "when the relation does not exist" do
|
99
|
-
it "returns false" do
|
100
|
-
expect(subject.can?('pb:consumer')).to be false
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
describe "_link!" do
|
106
|
-
context 'when the key exists' do
|
107
|
-
it 'returns a Link' do
|
108
|
-
expect(subject._link!('pb:provider')).to be_a(Link)
|
109
|
-
expect(subject._link!('pb:provider').href).to eq 'http://provider'
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
context 'when the key does not exist' do
|
114
|
-
it 'raises an error' do
|
115
|
-
expect { subject._link!('foo') }.to raise_error RelationNotFoundError, /Could not find relation 'foo' in resource at http:\/\/pact/
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
describe 'fetch' do
|
121
|
-
context 'when the key exists' do
|
122
|
-
it 'returns fetched value' do
|
123
|
-
expect(subject.fetch('pb:provider')).to eq("href" => 'http://provider')
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
context "when the key doesn't not exist" do
|
128
|
-
it 'returns nil' do
|
129
|
-
expect(subject.fetch('i-dont-exist')).to be nil
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
context "when a fallback key is provided" do
|
134
|
-
context "when the fallback value exists" do
|
135
|
-
it "returns the fallback value" do
|
136
|
-
expect(subject.fetch('i-dont-exist', 'pb:provider')).to eq("href" => 'http://provider')
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
context "when the fallback value does not exist" do
|
141
|
-
it "returns nil" do
|
142
|
-
expect(subject.fetch('i-dont-exist', 'i-also-dont-exist')).to be nil
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|