pact_broker 2.19.2 → 2.20.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|