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.
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