pact_broker 2.19.2 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/example/README.md +7 -1
- data/example/config.ru +2 -3
- data/lib/pact_broker/api/contracts/webhook_contract.rb +73 -6
- data/lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb +9 -13
- data/lib/pact_broker/api/resources/base_resource.rb +3 -3
- data/lib/pact_broker/api/resources/pact_webhooks.rb +1 -1
- data/lib/pact_broker/api/resources/webhook_execution.rb +5 -2
- data/lib/pact_broker/configuration.rb +9 -1
- data/lib/pact_broker/doc/views/webhooks.markdown +23 -0
- data/lib/pact_broker/domain/webhook_request.rb +49 -37
- data/lib/pact_broker/locale/en.yml +2 -0
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/check_host_whitelist.rb +22 -0
- data/lib/pact_broker/webhooks/render.rb +23 -0
- data/lib/pact_broker/webhooks/service.rb +2 -1
- data/lib/pact_broker/webhooks/webhook.rb +0 -5
- data/spec/features/create_webhook_spec.rb +2 -3
- data/spec/features/edit_webhook_spec.rb +2 -2
- data/spec/features/execute_webhook_spec.rb +32 -1
- data/spec/fixtures/webhook_valid.json +1 -1
- data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +64 -1
- data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +17 -9
- data/spec/lib/pact_broker/api/resources/pact_spec.rb +1 -1
- data/spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb +3 -3
- data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +3 -1
- data/spec/lib/pact_broker/domain/webhook_request_spec.rb +73 -68
- data/spec/lib/pact_broker/webhooks/check_host_whitelist_spec.rb +47 -0
- data/spec/lib/pact_broker/webhooks/render_spec.rb +36 -0
- data/spec/lib/pact_broker/webhooks/service_spec.rb +7 -0
- data/spec/support/shared_examples_for_responses.rb +2 -2
- metadata +8 -2
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'pact_broker/webhooks/check_host_whitelist'
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Webhooks
|
5
|
+
describe CheckHostWhitelist do
|
6
|
+
context "when the host is 10.0.0.7" do
|
7
|
+
let(:host) { "10.0.1.0" }
|
8
|
+
|
9
|
+
it "matches 10.0.0.0/8" do
|
10
|
+
expect(CheckHostWhitelist.call(host, ["10.0.0.0/8"])).to eq ["10.0.0.0/8"]
|
11
|
+
end
|
12
|
+
|
13
|
+
it "matches 10.0.1.0" do
|
14
|
+
expect(CheckHostWhitelist.call(host, [host])).to eq [host]
|
15
|
+
end
|
16
|
+
|
17
|
+
it "does not match 10.0.0.2" do
|
18
|
+
expect(CheckHostWhitelist.call(host, ["10.0.0.2"])).to eq []
|
19
|
+
end
|
20
|
+
|
21
|
+
it "does not match 10.0.0.0/28" do
|
22
|
+
expect(CheckHostWhitelist.call(host, ["10.0.0.0/28"])).to eq []
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "when the host is localhost" do
|
27
|
+
let(:host) { "localhost" }
|
28
|
+
|
29
|
+
it "matches localhost" do
|
30
|
+
expect(CheckHostWhitelist.call(host, [host])).to eq [host]
|
31
|
+
end
|
32
|
+
|
33
|
+
it "matches /local.*/" do
|
34
|
+
expect(CheckHostWhitelist.call(host, [/local*/])).to eq [/local*/]
|
35
|
+
end
|
36
|
+
|
37
|
+
it "does not match foo" do
|
38
|
+
expect(CheckHostWhitelist.call(host, ["foo"])).to eq []
|
39
|
+
end
|
40
|
+
|
41
|
+
it "does not match /foo.*/" do
|
42
|
+
expect(CheckHostWhitelist.call(host, [/foo*/])).to eq []
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'pact_broker/webhooks/render'
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Webhooks
|
6
|
+
describe Render do
|
7
|
+
describe "#call" do
|
8
|
+
before do
|
9
|
+
allow(PactBroker::Api::PactBrokerUrls).to receive(:pact_url).and_return("http://foo")
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:body) do
|
13
|
+
"Foo ${pactbroker.pactUrl} ${pactbroker.consumerVersionNumber}"
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:pact) do
|
17
|
+
instance_double("pact", consumer_version_number: "1.2.3+foo")
|
18
|
+
end
|
19
|
+
|
20
|
+
subject { Render.call(body, pact, nil) }
|
21
|
+
|
22
|
+
it { is_expected.to eq "Foo http://foo 1.2.3+foo" }
|
23
|
+
|
24
|
+
context "with an escaper" do
|
25
|
+
subject do
|
26
|
+
Render.call(body, pact, nil) do | value |
|
27
|
+
CGI.escape(value)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it { is_expected.to eq "Foo http%3A%2F%2Ffoo 1.2.3%2Bfoo" }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -102,6 +102,13 @@ module PactBroker
|
|
102
102
|
|
103
103
|
subject { PactBroker::Webhooks::Service.execute_webhook_now td.webhook, pact }
|
104
104
|
|
105
|
+
it "executes the triggered webhook with the correct options" do
|
106
|
+
allow(PactBroker.configuration).to receive(:show_webhook_response?).and_return('foo')
|
107
|
+
expected_options = { :failure_log_message => "Webhook execution failed", :show_response => 'foo' }
|
108
|
+
expect_any_instance_of(PactBroker::Webhooks::TriggeredWebhook).to receive(:execute).with(expected_options).and_call_original
|
109
|
+
subject
|
110
|
+
end
|
111
|
+
|
105
112
|
it "executes the HTTP request of the webhook" do
|
106
113
|
subject
|
107
114
|
expect(http_request).to have_been_made
|
@@ -24,14 +24,14 @@ end
|
|
24
24
|
|
25
25
|
RSpec::Matchers.define :be_a_json_response do
|
26
26
|
match do | actual |
|
27
|
-
expect(actual.headers['Content-Type']).to eq 'application/json;charset=utf-8'
|
27
|
+
expect(actual.headers['Content-Type']).to eq 'application/hal+json;charset=utf-8'
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
RSpec::Matchers.define :be_a_json_error_response do | message |
|
32
32
|
match do | actual |
|
33
33
|
expect(actual.status).to be 400
|
34
|
-
expect(actual.headers['Content-Type']).to eq 'application/json;charset=utf-8'
|
34
|
+
expect(actual.headers['Content-Type']).to eq 'application/hal+json;charset=utf-8'
|
35
35
|
expect(actual.body).to include message
|
36
36
|
end
|
37
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pact_broker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bethany Skurrie
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-06-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: httparty
|
@@ -887,10 +887,12 @@ files:
|
|
887
887
|
- lib/pact_broker/versions/parse_semantic_version.rb
|
888
888
|
- lib/pact_broker/versions/repository.rb
|
889
889
|
- lib/pact_broker/versions/service.rb
|
890
|
+
- lib/pact_broker/webhooks/check_host_whitelist.rb
|
890
891
|
- lib/pact_broker/webhooks/execution.rb
|
891
892
|
- lib/pact_broker/webhooks/job.rb
|
892
893
|
- lib/pact_broker/webhooks/latest_triggered_webhook.rb
|
893
894
|
- lib/pact_broker/webhooks/redact_logs.rb
|
895
|
+
- lib/pact_broker/webhooks/render.rb
|
894
896
|
- lib/pact_broker/webhooks/repository.rb
|
895
897
|
- lib/pact_broker/webhooks/service.rb
|
896
898
|
- lib/pact_broker/webhooks/status.rb
|
@@ -1144,8 +1146,10 @@ files:
|
|
1144
1146
|
- spec/lib/pact_broker/versions/parse_semantic_version_spec.rb
|
1145
1147
|
- spec/lib/pact_broker/versions/repository_spec.rb
|
1146
1148
|
- spec/lib/pact_broker/versions/service_spec.rb
|
1149
|
+
- spec/lib/pact_broker/webhooks/check_host_whitelist_spec.rb
|
1147
1150
|
- spec/lib/pact_broker/webhooks/job_spec.rb
|
1148
1151
|
- spec/lib/pact_broker/webhooks/redact_logs_spec.rb
|
1152
|
+
- spec/lib/pact_broker/webhooks/render_spec.rb
|
1149
1153
|
- spec/lib/pact_broker/webhooks/repository_spec.rb
|
1150
1154
|
- spec/lib/pact_broker/webhooks/service_spec.rb
|
1151
1155
|
- spec/lib/pact_broker/webhooks/status_spec.rb
|
@@ -1433,8 +1437,10 @@ test_files:
|
|
1433
1437
|
- spec/lib/pact_broker/versions/parse_semantic_version_spec.rb
|
1434
1438
|
- spec/lib/pact_broker/versions/repository_spec.rb
|
1435
1439
|
- spec/lib/pact_broker/versions/service_spec.rb
|
1440
|
+
- spec/lib/pact_broker/webhooks/check_host_whitelist_spec.rb
|
1436
1441
|
- spec/lib/pact_broker/webhooks/job_spec.rb
|
1437
1442
|
- spec/lib/pact_broker/webhooks/redact_logs_spec.rb
|
1443
|
+
- spec/lib/pact_broker/webhooks/render_spec.rb
|
1438
1444
|
- spec/lib/pact_broker/webhooks/repository_spec.rb
|
1439
1445
|
- spec/lib/pact_broker/webhooks/service_spec.rb
|
1440
1446
|
- spec/lib/pact_broker/webhooks/status_spec.rb
|