pact_broker 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +6 -0
  3. data/CHANGELOG.md +6 -0
  4. data/README.md +3 -1
  5. data/lib/pact_broker/api/contracts/consumer_version_number_validation.rb +32 -0
  6. data/lib/pact_broker/api/contracts/pacticipant_name_contract.rb +27 -0
  7. data/lib/pact_broker/api/contracts/pacticipant_name_validation.rb +30 -0
  8. data/lib/pact_broker/api/contracts/put_pact_params_contract.rb +55 -0
  9. data/lib/pact_broker/api/contracts/request_validations.rb +40 -0
  10. data/lib/pact_broker/api/contracts/webhook_contract.rb +32 -0
  11. data/lib/pact_broker/api/pact_broker_urls.rb +7 -0
  12. data/lib/pact_broker/api/resources/base_resource.rb +9 -0
  13. data/lib/pact_broker/api/resources/pact.rb +10 -3
  14. data/lib/pact_broker/api/resources/pact_webhooks.rb +9 -0
  15. data/lib/pact_broker/constants.rb +5 -0
  16. data/lib/pact_broker/doc/views/pacticipants.markdown +2 -2
  17. data/lib/pact_broker/locale/en.yml +6 -0
  18. data/lib/pact_broker/messages.rb +4 -0
  19. data/lib/pact_broker/models/webhook.rb +10 -8
  20. data/lib/pact_broker/models/webhook_request.rb +5 -17
  21. data/lib/pact_broker/pacts/pact_params.rb +79 -0
  22. data/lib/pact_broker/services/webhook_service.rb +6 -0
  23. data/lib/pact_broker/version.rb +1 -1
  24. data/pact_broker.gemspec +4 -3
  25. data/spec/fixtures/webhook_valid.json +14 -0
  26. data/spec/integration/endpoints/pact_put_spec.rb +16 -0
  27. data/spec/integration/endpoints/pact_webhooks_spec.rb +96 -0
  28. data/spec/lib/pact_broker/api/contracts/put_pact_params_contract_spec.rb +122 -0
  29. data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +106 -0
  30. data/spec/lib/pact_broker/api/resources/pact_spec.rb +15 -1
  31. data/spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb +11 -8
  32. data/spec/lib/pact_broker/models/webhook_request_spec.rb +0 -31
  33. data/spec/lib/pact_broker/models/webhook_spec.rb +0 -21
  34. data/spec/lib/pact_broker/pacts/pact_params_spec.rb +69 -0
  35. data/spec/support/shared_examples_for_responses.rb +14 -0
  36. 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(PactBroker::Services::WebhookService).to receive(:find_by_consumer_and_provider).and_return(webhooks)
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(:errors) { [] }
63
+ let(:valid) { true }
64
+ let(:errors) { double("errors", any?: !valid, full_messages: ['messages']) }
62
65
 
63
66
  before do
64
- allow(PactBroker::Services::WebhookService).to receive(:create).and_return(saved_webhook)
65
- allow(PactBroker::Services::WebhookService).to receive(:next_uuid).and_return(next_uuid)
66
- allow(webhook).to receive(:validate).and_return(errors)
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(:errors) { ['errors'] }
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: 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(PactBroker::Services::WebhookService).to receive(:create).with(next_uuid, webhook, consumer, provider)
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.0
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-14 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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.1.11
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