pact_broker 1.3.0 → 1.3.1
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 +5 -13
- data/.travis.yml +6 -0
- data/CHANGELOG.md +6 -0
- data/README.md +3 -1
- data/lib/pact_broker/api/contracts/consumer_version_number_validation.rb +32 -0
- data/lib/pact_broker/api/contracts/pacticipant_name_contract.rb +27 -0
- data/lib/pact_broker/api/contracts/pacticipant_name_validation.rb +30 -0
- data/lib/pact_broker/api/contracts/put_pact_params_contract.rb +55 -0
- data/lib/pact_broker/api/contracts/request_validations.rb +40 -0
- data/lib/pact_broker/api/contracts/webhook_contract.rb +32 -0
- data/lib/pact_broker/api/pact_broker_urls.rb +7 -0
- data/lib/pact_broker/api/resources/base_resource.rb +9 -0
- data/lib/pact_broker/api/resources/pact.rb +10 -3
- data/lib/pact_broker/api/resources/pact_webhooks.rb +9 -0
- data/lib/pact_broker/constants.rb +5 -0
- data/lib/pact_broker/doc/views/pacticipants.markdown +2 -2
- data/lib/pact_broker/locale/en.yml +6 -0
- data/lib/pact_broker/messages.rb +4 -0
- data/lib/pact_broker/models/webhook.rb +10 -8
- data/lib/pact_broker/models/webhook_request.rb +5 -17
- data/lib/pact_broker/pacts/pact_params.rb +79 -0
- data/lib/pact_broker/services/webhook_service.rb +6 -0
- data/lib/pact_broker/version.rb +1 -1
- data/pact_broker.gemspec +4 -3
- data/spec/fixtures/webhook_valid.json +14 -0
- data/spec/integration/endpoints/pact_put_spec.rb +16 -0
- data/spec/integration/endpoints/pact_webhooks_spec.rb +96 -0
- data/spec/lib/pact_broker/api/contracts/put_pact_params_contract_spec.rb +122 -0
- data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +106 -0
- data/spec/lib/pact_broker/api/resources/pact_spec.rb +15 -1
- data/spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb +11 -8
- data/spec/lib/pact_broker/models/webhook_request_spec.rb +0 -31
- data/spec/lib/pact_broker/models/webhook_spec.rb +0 -21
- data/spec/lib/pact_broker/pacts/pact_params_spec.rb +69 -0
- data/spec/support/shared_examples_for_responses.rb +14 -0
- metadata +88 -55
@@ -15,7 +15,7 @@ module PactBroker::Api
|
|
15
15
|
|
16
16
|
describe "PUT" do
|
17
17
|
|
18
|
-
subject { put "/pacts/provider/Provider/consumer/Consumer/version/1.2", json, {'CONTENT_TYPE' => "application/json"} }
|
18
|
+
subject { put "/pacts/provider/Provider/consumer/Consumer/version/1.2", json, {'CONTENT_TYPE' => "application/json"} ; last_response }
|
19
19
|
|
20
20
|
let(:response) { subject; last_response }
|
21
21
|
|
@@ -35,6 +35,20 @@ module PactBroker::Api
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
context "with validation errors" do
|
39
|
+
|
40
|
+
let(:errors) { double(:errors, full_messages: ['messages']) }
|
41
|
+
|
42
|
+
before do
|
43
|
+
allow_any_instance_of(Contracts::PutPactParamsContract).to receive(:validate).and_return(false)
|
44
|
+
allow_any_instance_of(Contracts::PutPactParamsContract).to receive(:errors).and_return(errors)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "returns a 400 error" do
|
48
|
+
expect(subject).to be_a_json_error_response 'messages'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
38
52
|
context "with a potential duplicate pacticipant" do
|
39
53
|
|
40
54
|
let(:pacticipant_service) { PactBroker::Services::PacticipantService }
|
@@ -6,6 +6,8 @@ module PactBroker::Api
|
|
6
6
|
|
7
7
|
describe PactWebhooks do
|
8
8
|
|
9
|
+
|
10
|
+
let(:webhook_service) { PactBroker::Services::WebhookService }
|
9
11
|
let(:uuid) { '1483234k24DKFGJ45K' }
|
10
12
|
let(:path) { "/webhooks/provider/Some%20Provider/consumer/Some%20Consumer" }
|
11
13
|
let(:headers) { {'CONTENT_TYPE' => 'application/json'} }
|
@@ -25,7 +27,7 @@ module PactBroker::Api
|
|
25
27
|
let(:decorator) { instance_double(Decorators::WebhooksDecorator, to_json: json) }
|
26
28
|
|
27
29
|
before do
|
28
|
-
allow(
|
30
|
+
allow(webhook_service).to receive(:find_by_consumer_and_provider).and_return(webhooks)
|
29
31
|
allow(Decorators::WebhooksDecorator).to receive(:new).and_return(decorator)
|
30
32
|
end
|
31
33
|
|
@@ -58,12 +60,13 @@ module PactBroker::Api
|
|
58
60
|
end
|
59
61
|
let(:next_uuid) { '123k2nvkkwjrwk34' }
|
60
62
|
|
61
|
-
let(:
|
63
|
+
let(:valid) { true }
|
64
|
+
let(:errors) { double("errors", any?: !valid, full_messages: ['messages']) }
|
62
65
|
|
63
66
|
before do
|
64
|
-
allow(
|
65
|
-
allow(
|
66
|
-
allow(
|
67
|
+
allow(webhook_service).to receive(:create).and_return(saved_webhook)
|
68
|
+
allow(webhook_service).to receive(:next_uuid).and_return(next_uuid)
|
69
|
+
allow(webhook_service).to receive(:errors).and_return(errors)
|
67
70
|
allow(PactBroker::Models::Webhook).to receive(:new).and_return(webhook)
|
68
71
|
end
|
69
72
|
|
@@ -117,7 +120,7 @@ module PactBroker::Api
|
|
117
120
|
|
118
121
|
context "with invalid attributes" do
|
119
122
|
|
120
|
-
let(:
|
123
|
+
let(:valid) { false }
|
121
124
|
|
122
125
|
it "returns a 400" do
|
123
126
|
subject
|
@@ -131,7 +134,7 @@ module PactBroker::Api
|
|
131
134
|
|
132
135
|
it "returns the validation errors" do
|
133
136
|
subject
|
134
|
-
expect(JSON.parse(last_response.body, symbolize_names: true)).to eq errors:
|
137
|
+
expect(JSON.parse(last_response.body, symbolize_names: true)).to eq errors: ['messages']
|
135
138
|
end
|
136
139
|
|
137
140
|
end
|
@@ -146,7 +149,7 @@ module PactBroker::Api
|
|
146
149
|
end
|
147
150
|
|
148
151
|
it "saves the webhook" do
|
149
|
-
expect(
|
152
|
+
expect(webhook_service).to receive(:create).with(next_uuid, webhook, consumer, provider)
|
150
153
|
subject
|
151
154
|
end
|
152
155
|
|
@@ -137,37 +137,6 @@ module PactBroker
|
|
137
137
|
|
138
138
|
end
|
139
139
|
|
140
|
-
|
141
|
-
describe "validate" do
|
142
|
-
let(:method) { 'POST' }
|
143
|
-
let(:url) { "http://example.org" }
|
144
|
-
subject { WebhookRequest.new(method: method, url: url)}
|
145
|
-
context "with a missing method" do
|
146
|
-
let(:method) { nil }
|
147
|
-
it "returns an error" do
|
148
|
-
expect(subject.validate.first).to eq "Missing required attribute 'method'"
|
149
|
-
end
|
150
|
-
end
|
151
|
-
context "with an invalid method" do
|
152
|
-
let(:method) { 'INVALID' }
|
153
|
-
it "returns an error" do
|
154
|
-
expect(subject.validate.first).to eq "Invalid HTTP method 'INVALID'"
|
155
|
-
end
|
156
|
-
end
|
157
|
-
context "with a missing url" do
|
158
|
-
let(:url) { nil }
|
159
|
-
it "returns an error" do
|
160
|
-
expect(subject.validate.first).to eq "Missing required attribute 'url'"
|
161
|
-
end
|
162
|
-
end
|
163
|
-
context "with a URL that is missing the scheme" do
|
164
|
-
let(:url) { "example.org" }
|
165
|
-
it "returns an error" do
|
166
|
-
expect(subject.validate.first).to eq "Invalid URL 'example.org'. Expected format: http://example.org"
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
end
|
171
140
|
end
|
172
141
|
|
173
142
|
end
|
@@ -12,27 +12,6 @@ module PactBroker
|
|
12
12
|
let(:request) { instance_double(PactBroker::Models::WebhookRequest, execute: nil)}
|
13
13
|
subject { Webhook.new(request: request, consumer: consumer, provider: provider,) }
|
14
14
|
|
15
|
-
describe "#validate" do
|
16
|
-
let(:errors) { ['errors'] }
|
17
|
-
|
18
|
-
|
19
|
-
context "when the request is not present" do
|
20
|
-
let(:request) { nil }
|
21
|
-
|
22
|
-
it "returns an error message" do
|
23
|
-
expect(subject.validate).to include "Missing required attribute 'request'"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context "when the request is present" do
|
28
|
-
|
29
|
-
it "validates the request" do
|
30
|
-
expect(request).to receive(:validate).and_return(errors)
|
31
|
-
expect(subject.validate).to eq errors
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
15
|
describe "description" do
|
37
16
|
it "returns a description of the webhook" do
|
38
17
|
expect(subject.description).to eq "A webhook for the pact between Consumer and Provider"
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'pact_broker/pacts/pact_params'
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Pacts
|
6
|
+
describe PactParams do
|
7
|
+
|
8
|
+
let(:body) { load_fixture('consumer-provider.json') }
|
9
|
+
let(:consumer_version_number) { '1.2.3' }
|
10
|
+
let(:headers) { { 'X-Pact-Consumer-Version' => consumer_version_number } }
|
11
|
+
|
12
|
+
describe "from_request" do
|
13
|
+
|
14
|
+
context "from a PUT request" do
|
15
|
+
let(:request) { Webmachine::Request.new("PUT", "/", headers, body)}
|
16
|
+
let(:path_info) do
|
17
|
+
{
|
18
|
+
consumer_name: 'Consumer',
|
19
|
+
provider_name: 'Provider',
|
20
|
+
consumer_version_number: '1.2.3'
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
subject { PactParams.from_request(request, path_info) }
|
25
|
+
|
26
|
+
it "extracts the consumer name from the path" do
|
27
|
+
expect(subject.consumer_name).to eq "Consumer"
|
28
|
+
end
|
29
|
+
|
30
|
+
it "extracts the provider name from the path" do
|
31
|
+
expect(subject.provider_name).to eq "Provider"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "extracts the consumer_version_number from the path" do
|
35
|
+
expect(subject.consumer_version_number).to eq "1.2.3"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "extracts the json_content" do
|
39
|
+
expect(subject.json_content).to eq body
|
40
|
+
end
|
41
|
+
|
42
|
+
it "extracts the consumer name from the pact" do
|
43
|
+
expect(subject.consumer_name_in_pact).to eq "A Consumer"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "extracts the provider name from the pact" do
|
47
|
+
expect(subject.provider_name_in_pact).to eq "A Provider"
|
48
|
+
end
|
49
|
+
|
50
|
+
context "with missing data" do
|
51
|
+
let(:body){ '' }
|
52
|
+
|
53
|
+
it "the consumer name from the pact is nil" do
|
54
|
+
expect(subject.consumer_name_in_pact).to be nil
|
55
|
+
end
|
56
|
+
|
57
|
+
it "the provider name from the pact is nil" do
|
58
|
+
expect(subject.provider_name_in_pact).to be nil
|
59
|
+
end
|
60
|
+
|
61
|
+
it "extracts the json_content" do
|
62
|
+
expect(subject.json_content).to eq ''
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -18,6 +18,20 @@ RSpec::Matchers.define :be_a_hal_json_success_response do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
RSpec::Matchers.define :be_a_json_response do
|
22
|
+
match do | actual |
|
23
|
+
expect(actual.headers['Content-Type']).to eq 'application/json'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
RSpec::Matchers.define :be_a_json_error_response do | message |
|
28
|
+
match do | actual |
|
29
|
+
expect(actual.status).to be 400
|
30
|
+
expect(actual.headers['Content-Type']).to eq 'application/json'
|
31
|
+
expect(actual.body).to include message
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
21
35
|
RSpec::Matchers.define :be_a_404_response do
|
22
36
|
match do | actual |
|
23
37
|
expect(actual.status).to be 404
|
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: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bethany Skurrie
|
@@ -10,292 +10,306 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-10-
|
13
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: httparty
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: json
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: roar
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
49
|
+
version: 0.12.9
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
56
|
+
version: 0.12.9
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: reform
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '1.0'
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '1.0'
|
57
71
|
- !ruby/object:Gem::Dependency
|
58
72
|
name: sequel
|
59
73
|
requirement: !ruby/object:Gem::Requirement
|
60
74
|
requirements:
|
61
|
-
- - ~>
|
75
|
+
- - "~>"
|
62
76
|
- !ruby/object:Gem::Version
|
63
77
|
version: '4.12'
|
64
78
|
type: :runtime
|
65
79
|
prerelease: false
|
66
80
|
version_requirements: !ruby/object:Gem::Requirement
|
67
81
|
requirements:
|
68
|
-
- - ~>
|
82
|
+
- - "~>"
|
69
83
|
- !ruby/object:Gem::Version
|
70
84
|
version: '4.12'
|
71
85
|
- !ruby/object:Gem::Dependency
|
72
86
|
name: webmachine
|
73
87
|
requirement: !ruby/object:Gem::Requirement
|
74
88
|
requirements:
|
75
|
-
- -
|
89
|
+
- - "~>"
|
76
90
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
91
|
+
version: '1.2'
|
78
92
|
type: :runtime
|
79
93
|
prerelease: false
|
80
94
|
version_requirements: !ruby/object:Gem::Requirement
|
81
95
|
requirements:
|
82
|
-
- -
|
96
|
+
- - "~>"
|
83
97
|
- !ruby/object:Gem::Version
|
84
|
-
version: '
|
98
|
+
version: '1.2'
|
85
99
|
- !ruby/object:Gem::Dependency
|
86
100
|
name: versionomy
|
87
101
|
requirement: !ruby/object:Gem::Requirement
|
88
102
|
requirements:
|
89
|
-
- -
|
103
|
+
- - "~>"
|
90
104
|
- !ruby/object:Gem::Version
|
91
|
-
version: '0'
|
105
|
+
version: '0.4'
|
92
106
|
type: :runtime
|
93
107
|
prerelease: false
|
94
108
|
version_requirements: !ruby/object:Gem::Requirement
|
95
109
|
requirements:
|
96
|
-
- -
|
110
|
+
- - "~>"
|
97
111
|
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
112
|
+
version: '0.4'
|
99
113
|
- !ruby/object:Gem::Dependency
|
100
114
|
name: rack
|
101
115
|
requirement: !ruby/object:Gem::Requirement
|
102
116
|
requirements:
|
103
|
-
- -
|
117
|
+
- - ">="
|
104
118
|
- !ruby/object:Gem::Version
|
105
119
|
version: '0'
|
106
120
|
type: :runtime
|
107
121
|
prerelease: false
|
108
122
|
version_requirements: !ruby/object:Gem::Requirement
|
109
123
|
requirements:
|
110
|
-
- -
|
124
|
+
- - ">="
|
111
125
|
- !ruby/object:Gem::Version
|
112
126
|
version: '0'
|
113
127
|
- !ruby/object:Gem::Dependency
|
114
128
|
name: redcarpet
|
115
129
|
requirement: !ruby/object:Gem::Requirement
|
116
130
|
requirements:
|
117
|
-
- - ~>
|
131
|
+
- - "~>"
|
118
132
|
- !ruby/object:Gem::Version
|
119
133
|
version: '3.1'
|
120
134
|
type: :runtime
|
121
135
|
prerelease: false
|
122
136
|
version_requirements: !ruby/object:Gem::Requirement
|
123
137
|
requirements:
|
124
|
-
- - ~>
|
138
|
+
- - "~>"
|
125
139
|
- !ruby/object:Gem::Version
|
126
140
|
version: '3.1'
|
127
141
|
- !ruby/object:Gem::Dependency
|
128
142
|
name: pact
|
129
143
|
requirement: !ruby/object:Gem::Requirement
|
130
144
|
requirements:
|
131
|
-
- - ~>
|
145
|
+
- - "~>"
|
132
146
|
- !ruby/object:Gem::Version
|
133
147
|
version: '1.3'
|
134
|
-
- -
|
148
|
+
- - ">="
|
135
149
|
- !ruby/object:Gem::Version
|
136
150
|
version: 1.3.2
|
137
151
|
type: :runtime
|
138
152
|
prerelease: false
|
139
153
|
version_requirements: !ruby/object:Gem::Requirement
|
140
154
|
requirements:
|
141
|
-
- - ~>
|
155
|
+
- - "~>"
|
142
156
|
- !ruby/object:Gem::Version
|
143
157
|
version: '1.3'
|
144
|
-
- -
|
158
|
+
- - ">="
|
145
159
|
- !ruby/object:Gem::Version
|
146
160
|
version: 1.3.2
|
147
161
|
- !ruby/object:Gem::Dependency
|
148
162
|
name: padrino
|
149
163
|
requirement: !ruby/object:Gem::Requirement
|
150
164
|
requirements:
|
151
|
-
- - ~>
|
165
|
+
- - "~>"
|
152
166
|
- !ruby/object:Gem::Version
|
153
167
|
version: '0.12'
|
154
168
|
type: :runtime
|
155
169
|
prerelease: false
|
156
170
|
version_requirements: !ruby/object:Gem::Requirement
|
157
171
|
requirements:
|
158
|
-
- - ~>
|
172
|
+
- - "~>"
|
159
173
|
- !ruby/object:Gem::Version
|
160
174
|
version: '0.12'
|
161
175
|
- !ruby/object:Gem::Dependency
|
162
176
|
name: haml
|
163
177
|
requirement: !ruby/object:Gem::Requirement
|
164
178
|
requirements:
|
165
|
-
- -
|
179
|
+
- - ">="
|
166
180
|
- !ruby/object:Gem::Version
|
167
181
|
version: '0'
|
168
182
|
type: :runtime
|
169
183
|
prerelease: false
|
170
184
|
version_requirements: !ruby/object:Gem::Requirement
|
171
185
|
requirements:
|
172
|
-
- -
|
186
|
+
- - ">="
|
173
187
|
- !ruby/object:Gem::Version
|
174
188
|
version: '0'
|
175
189
|
- !ruby/object:Gem::Dependency
|
176
190
|
name: sqlite3
|
177
191
|
requirement: !ruby/object:Gem::Requirement
|
178
192
|
requirements:
|
179
|
-
- -
|
193
|
+
- - ">="
|
180
194
|
- !ruby/object:Gem::Version
|
181
195
|
version: '0'
|
182
196
|
type: :development
|
183
197
|
prerelease: false
|
184
198
|
version_requirements: !ruby/object:Gem::Requirement
|
185
199
|
requirements:
|
186
|
-
- -
|
200
|
+
- - ">="
|
187
201
|
- !ruby/object:Gem::Version
|
188
202
|
version: '0'
|
189
203
|
- !ruby/object:Gem::Dependency
|
190
204
|
name: pry
|
191
205
|
requirement: !ruby/object:Gem::Requirement
|
192
206
|
requirements:
|
193
|
-
- -
|
207
|
+
- - ">="
|
194
208
|
- !ruby/object:Gem::Version
|
195
209
|
version: '0'
|
196
210
|
type: :development
|
197
211
|
prerelease: false
|
198
212
|
version_requirements: !ruby/object:Gem::Requirement
|
199
213
|
requirements:
|
200
|
-
- -
|
214
|
+
- - ">="
|
201
215
|
- !ruby/object:Gem::Version
|
202
216
|
version: '0'
|
203
217
|
- !ruby/object:Gem::Dependency
|
204
218
|
name: rake
|
205
219
|
requirement: !ruby/object:Gem::Requirement
|
206
220
|
requirements:
|
207
|
-
- - ~>
|
221
|
+
- - "~>"
|
208
222
|
- !ruby/object:Gem::Version
|
209
223
|
version: '10.0'
|
210
224
|
type: :development
|
211
225
|
prerelease: false
|
212
226
|
version_requirements: !ruby/object:Gem::Requirement
|
213
227
|
requirements:
|
214
|
-
- - ~>
|
228
|
+
- - "~>"
|
215
229
|
- !ruby/object:Gem::Version
|
216
230
|
version: '10.0'
|
217
231
|
- !ruby/object:Gem::Dependency
|
218
232
|
name: fakefs
|
219
233
|
requirement: !ruby/object:Gem::Requirement
|
220
234
|
requirements:
|
221
|
-
- - ~>
|
235
|
+
- - "~>"
|
222
236
|
- !ruby/object:Gem::Version
|
223
237
|
version: '0.4'
|
224
238
|
type: :development
|
225
239
|
prerelease: false
|
226
240
|
version_requirements: !ruby/object:Gem::Requirement
|
227
241
|
requirements:
|
228
|
-
- - ~>
|
242
|
+
- - "~>"
|
229
243
|
- !ruby/object:Gem::Version
|
230
244
|
version: '0.4'
|
231
245
|
- !ruby/object:Gem::Dependency
|
232
246
|
name: mysql2
|
233
247
|
requirement: !ruby/object:Gem::Requirement
|
234
248
|
requirements:
|
235
|
-
- - ~>
|
249
|
+
- - "~>"
|
236
250
|
- !ruby/object:Gem::Version
|
237
251
|
version: 0.3.15
|
238
252
|
type: :development
|
239
253
|
prerelease: false
|
240
254
|
version_requirements: !ruby/object:Gem::Requirement
|
241
255
|
requirements:
|
242
|
-
- - ~>
|
256
|
+
- - "~>"
|
243
257
|
- !ruby/object:Gem::Version
|
244
258
|
version: 0.3.15
|
245
259
|
- !ruby/object:Gem::Dependency
|
246
260
|
name: webmock
|
247
261
|
requirement: !ruby/object:Gem::Requirement
|
248
262
|
requirements:
|
249
|
-
- -
|
263
|
+
- - ">="
|
250
264
|
- !ruby/object:Gem::Version
|
251
265
|
version: '0'
|
252
266
|
type: :development
|
253
267
|
prerelease: false
|
254
268
|
version_requirements: !ruby/object:Gem::Requirement
|
255
269
|
requirements:
|
256
|
-
- -
|
270
|
+
- - ">="
|
257
271
|
- !ruby/object:Gem::Version
|
258
272
|
version: '0'
|
259
273
|
- !ruby/object:Gem::Dependency
|
260
274
|
name: rspec
|
261
275
|
requirement: !ruby/object:Gem::Requirement
|
262
276
|
requirements:
|
263
|
-
- - ~>
|
277
|
+
- - "~>"
|
264
278
|
- !ruby/object:Gem::Version
|
265
279
|
version: '3.0'
|
266
280
|
type: :development
|
267
281
|
prerelease: false
|
268
282
|
version_requirements: !ruby/object:Gem::Requirement
|
269
283
|
requirements:
|
270
|
-
- - ~>
|
284
|
+
- - "~>"
|
271
285
|
- !ruby/object:Gem::Version
|
272
286
|
version: '3.0'
|
273
287
|
- !ruby/object:Gem::Dependency
|
274
288
|
name: rspec-its
|
275
289
|
requirement: !ruby/object:Gem::Requirement
|
276
290
|
requirements:
|
277
|
-
- -
|
291
|
+
- - ">="
|
278
292
|
- !ruby/object:Gem::Version
|
279
293
|
version: '0'
|
280
294
|
type: :development
|
281
295
|
prerelease: false
|
282
296
|
version_requirements: !ruby/object:Gem::Requirement
|
283
297
|
requirements:
|
284
|
-
- -
|
298
|
+
- - ">="
|
285
299
|
- !ruby/object:Gem::Version
|
286
300
|
version: '0'
|
287
301
|
- !ruby/object:Gem::Dependency
|
288
302
|
name: database_cleaner
|
289
303
|
requirement: !ruby/object:Gem::Requirement
|
290
304
|
requirements:
|
291
|
-
- -
|
305
|
+
- - ">="
|
292
306
|
- !ruby/object:Gem::Version
|
293
307
|
version: '0'
|
294
308
|
type: :development
|
295
309
|
prerelease: false
|
296
310
|
version_requirements: !ruby/object:Gem::Requirement
|
297
311
|
requirements:
|
298
|
-
- -
|
312
|
+
- - ">="
|
299
313
|
- !ruby/object:Gem::Version
|
300
314
|
version: '0'
|
301
315
|
description: A server that stores and returns pact files generated by the pact gem.
|
@@ -308,8 +322,9 @@ executables: []
|
|
308
322
|
extensions: []
|
309
323
|
extra_rdoc_files: []
|
310
324
|
files:
|
311
|
-
- .gitignore
|
312
|
-
- .rspec
|
325
|
+
- ".gitignore"
|
326
|
+
- ".rspec"
|
327
|
+
- ".travis.yml"
|
313
328
|
- CHANGELOG.md
|
314
329
|
- Gemfile
|
315
330
|
- README.md
|
@@ -338,6 +353,12 @@ files:
|
|
338
353
|
- lib/db.rb
|
339
354
|
- lib/pact_broker.rb
|
340
355
|
- lib/pact_broker/api.rb
|
356
|
+
- lib/pact_broker/api/contracts/consumer_version_number_validation.rb
|
357
|
+
- lib/pact_broker/api/contracts/pacticipant_name_contract.rb
|
358
|
+
- lib/pact_broker/api/contracts/pacticipant_name_validation.rb
|
359
|
+
- lib/pact_broker/api/contracts/put_pact_params_contract.rb
|
360
|
+
- lib/pact_broker/api/contracts/request_validations.rb
|
361
|
+
- lib/pact_broker/api/contracts/webhook_contract.rb
|
341
362
|
- lib/pact_broker/api/decorators.rb
|
342
363
|
- lib/pact_broker/api/decorators/base_decorator.rb
|
343
364
|
- lib/pact_broker/api/decorators/basic_pacticipant_decorator.rb
|
@@ -381,6 +402,7 @@ files:
|
|
381
402
|
- lib/pact_broker/api/resources/webhooks.rb
|
382
403
|
- lib/pact_broker/app.rb
|
383
404
|
- lib/pact_broker/configuration.rb
|
405
|
+
- lib/pact_broker/constants.rb
|
384
406
|
- lib/pact_broker/db.rb
|
385
407
|
- lib/pact_broker/doc/controllers/app.rb
|
386
408
|
- lib/pact_broker/doc/views/latest-pacts.markdown
|
@@ -407,6 +429,7 @@ files:
|
|
407
429
|
- lib/pact_broker/models/webhook_execution_result.rb
|
408
430
|
- lib/pact_broker/models/webhook_request.rb
|
409
431
|
- lib/pact_broker/models/webhook_request_header.rb
|
432
|
+
- lib/pact_broker/pacts/pact_params.rb
|
410
433
|
- lib/pact_broker/project_root.rb
|
411
434
|
- lib/pact_broker/repositories.rb
|
412
435
|
- lib/pact_broker/repositories/pact.rb
|
@@ -471,9 +494,13 @@ files:
|
|
471
494
|
- script/update-hal-browser
|
472
495
|
- spec/fixtures/consumer-provider.json
|
473
496
|
- spec/fixtures/renderer_pact.json
|
497
|
+
- spec/fixtures/webhook_valid.json
|
474
498
|
- spec/integration/app_spec.rb
|
475
499
|
- spec/integration/endpoints/group.rb
|
476
500
|
- spec/integration/endpoints/pact_put_spec.rb
|
501
|
+
- spec/integration/endpoints/pact_webhooks_spec.rb
|
502
|
+
- spec/lib/pact_broker/api/contracts/put_pact_params_contract_spec.rb
|
503
|
+
- spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb
|
477
504
|
- spec/lib/pact_broker/api/decorators/latest_pact_decorator_spec.rb
|
478
505
|
- spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
|
479
506
|
- spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb
|
@@ -506,6 +533,7 @@ files:
|
|
506
533
|
- spec/lib/pact_broker/models/pacticipant_spec.rb
|
507
534
|
- spec/lib/pact_broker/models/webhook_request_spec.rb
|
508
535
|
- spec/lib/pact_broker/models/webhook_spec.rb
|
536
|
+
- spec/lib/pact_broker/pacts/pact_params_spec.rb
|
509
537
|
- spec/lib/pact_broker/repositories/pact_repository_spec.rb
|
510
538
|
- spec/lib/pact_broker/repositories/pacticipant_repository_spec.rb
|
511
539
|
- spec/lib/pact_broker/repositories/tag_repository_spec.rb
|
@@ -578,26 +606,30 @@ require_paths:
|
|
578
606
|
- lib
|
579
607
|
required_ruby_version: !ruby/object:Gem::Requirement
|
580
608
|
requirements:
|
581
|
-
- -
|
609
|
+
- - ">="
|
582
610
|
- !ruby/object:Gem::Version
|
583
611
|
version: '0'
|
584
612
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
585
613
|
requirements:
|
586
|
-
- -
|
614
|
+
- - ">="
|
587
615
|
- !ruby/object:Gem::Version
|
588
616
|
version: '0'
|
589
617
|
requirements: []
|
590
618
|
rubyforge_project:
|
591
|
-
rubygems_version: 2.
|
619
|
+
rubygems_version: 2.2.2
|
592
620
|
signing_key:
|
593
621
|
specification_version: 4
|
594
622
|
summary: See description
|
595
623
|
test_files:
|
596
624
|
- spec/fixtures/consumer-provider.json
|
597
625
|
- spec/fixtures/renderer_pact.json
|
626
|
+
- spec/fixtures/webhook_valid.json
|
598
627
|
- spec/integration/app_spec.rb
|
599
628
|
- spec/integration/endpoints/group.rb
|
600
629
|
- spec/integration/endpoints/pact_put_spec.rb
|
630
|
+
- spec/integration/endpoints/pact_webhooks_spec.rb
|
631
|
+
- spec/lib/pact_broker/api/contracts/put_pact_params_contract_spec.rb
|
632
|
+
- spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb
|
601
633
|
- spec/lib/pact_broker/api/decorators/latest_pact_decorator_spec.rb
|
602
634
|
- spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
|
603
635
|
- spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb
|
@@ -630,6 +662,7 @@ test_files:
|
|
630
662
|
- spec/lib/pact_broker/models/pacticipant_spec.rb
|
631
663
|
- spec/lib/pact_broker/models/webhook_request_spec.rb
|
632
664
|
- spec/lib/pact_broker/models/webhook_spec.rb
|
665
|
+
- spec/lib/pact_broker/pacts/pact_params_spec.rb
|
633
666
|
- spec/lib/pact_broker/repositories/pact_repository_spec.rb
|
634
667
|
- spec/lib/pact_broker/repositories/pacticipant_repository_spec.rb
|
635
668
|
- spec/lib/pact_broker/repositories/tag_repository_spec.rb
|