committee 2.5.1 → 3.0.0.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +5 -5
  2. data/lib/committee.rb +16 -5
  3. data/lib/committee/bin/committee_stub.rb +4 -0
  4. data/lib/committee/drivers.rb +12 -29
  5. data/lib/committee/drivers/hyper_schema.rb +9 -0
  6. data/lib/committee/drivers/open_api_2.rb +9 -20
  7. data/lib/committee/drivers/open_api_3.rb +70 -0
  8. data/lib/committee/errors.rb +3 -0
  9. data/lib/committee/middleware/base.rb +20 -62
  10. data/lib/committee/middleware/request_validation.rb +5 -62
  11. data/lib/committee/middleware/response_validation.rb +5 -19
  12. data/lib/committee/middleware/stub.rb +5 -1
  13. data/lib/committee/parameter_coercer.rb +1 -0
  14. data/lib/committee/request_unpacker.rb +2 -5
  15. data/lib/committee/schema_validator/hyper_schema.rb +92 -0
  16. data/lib/committee/{request_validator.rb → schema_validator/hyper_schema/request_validator.rb} +1 -1
  17. data/lib/committee/{response_generator.rb → schema_validator/hyper_schema/response_generator.rb} +1 -1
  18. data/lib/committee/{response_validator.rb → schema_validator/hyper_schema/response_validator.rb} +6 -6
  19. data/lib/committee/{router.rb → schema_validator/hyper_schema/router.rb} +10 -4
  20. data/lib/committee/{string_params_coercer.rb → schema_validator/hyper_schema/string_params_coercer.rb} +1 -1
  21. data/lib/committee/schema_validator/open_api_3.rb +67 -0
  22. data/lib/committee/schema_validator/open_api_3/operation_wrapper.rb +98 -0
  23. data/lib/committee/schema_validator/open_api_3/request_validator.rb +17 -0
  24. data/lib/committee/schema_validator/open_api_3/response_validator.rb +35 -0
  25. data/lib/committee/schema_validator/open_api_3/router.rb +26 -0
  26. data/lib/committee/schema_validator/option.rb +31 -0
  27. data/lib/committee/test/methods.rb +14 -117
  28. data/test/bin/committee_stub_test.rb +6 -0
  29. data/test/drivers/open_api_2_test.rb +0 -81
  30. data/test/drivers/open_api_3_test.rb +81 -0
  31. data/test/drivers_test.rb +2 -42
  32. data/test/middleware/base_test.rb +42 -21
  33. data/test/middleware/request_validation_open_api_3_test.rb +499 -0
  34. data/test/middleware/request_validation_test.rb +18 -0
  35. data/test/middleware/response_validation_open_api_3_test.rb +96 -0
  36. data/test/middleware/response_validation_test.rb +7 -30
  37. data/test/middleware/stub_test.rb +9 -0
  38. data/test/request_unpacker_test.rb +55 -21
  39. data/test/{request_validator_test.rb → schema_validator/hyper_schema/request_validator_test.rb} +4 -4
  40. data/test/{response_generator_test.rb → schema_validator/hyper_schema/response_generator_test.rb} +11 -11
  41. data/test/{response_validator_test.rb → schema_validator/hyper_schema/response_validator_test.rb} +3 -3
  42. data/test/{router_test.rb → schema_validator/hyper_schema/router_test.rb} +8 -10
  43. data/test/{string_params_coercer_test.rb → schema_validator/hyper_schema/string_params_coercer_test.rb} +3 -3
  44. data/test/schema_validator/open_api_3/operation_wrapper_test.rb +132 -0
  45. data/test/schema_validator/open_api_3/request_validator_test.rb +151 -0
  46. data/test/schema_validator/open_api_3/response_validator_test.rb +55 -0
  47. data/test/test/methods_new_version_test.rb +11 -20
  48. data/test/test/methods_test.rb +51 -55
  49. data/test/test_helper.rb +22 -8
  50. metadata +46 -18
@@ -21,6 +21,7 @@ require "minitest/spec"
21
21
  require "minitest/autorun"
22
22
  require "rack/test"
23
23
  require "rr"
24
+ require "pry"
24
25
 
25
26
  require_relative "../lib/committee"
26
27
 
@@ -47,27 +48,40 @@ ValidPet = {
47
48
  }.freeze
48
49
 
49
50
  def hyper_schema
50
- @hyper_schema ||= Committee::Drivers.load_from_file(hyper_schema_schema_path)
51
+ @hyper_schema ||= begin
52
+ driver = Committee::Drivers::HyperSchema.new
53
+ driver.parse(hyper_schema_data)
54
+ end
51
55
  end
52
56
 
53
57
  def open_api_2_schema
54
- @open_api_2_schema ||= Committee::Drivers.load_from_data(open_api_2_data)
58
+ @open_api_2_schema ||= begin
59
+ driver = Committee::Drivers::OpenAPI2.new
60
+ driver.parse(open_api_2_data)
61
+ end
62
+ end
63
+
64
+ def open_api_3_schema
65
+ @open_api_3_schema ||= begin
66
+ driver = Committee::Drivers::OpenAPI3.new
67
+ driver.parse(open_api_3_data)
68
+ end
55
69
  end
56
70
 
57
71
  # Don't cache this because we'll often manipulate the created hash in tests.
58
72
  def hyper_schema_data
59
- JSON.parse(File.read(hyper_schema_schema_path))
73
+ JSON.parse(File.read("./test/data/hyperschema/paas.json"))
60
74
  end
61
75
 
62
76
  # Don't cache this because we'll often manipulate the created hash in tests.
63
77
  def open_api_2_data
64
- JSON.parse(File.read(open_api_2_schema_path))
78
+ JSON.parse(File.read("./test/data/openapi2/petstore-expanded.json"))
65
79
  end
66
80
 
67
- def hyper_schema_schema_path
68
- "./test/data/hyperschema/paas.json"
81
+ def open_api_3_data
82
+ OpenAPIParser.parse(YAML.load_file(open_api_3_data_path))
69
83
  end
70
84
 
71
- def open_api_2_schema_path
72
- "./test/data/openapi2/petstore-expanded.json"
85
+ def open_api_3_data_path
86
+ "./test/data/openapi3/normal.yml"
73
87
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: committee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 3.0.0.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandur
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-01-23 00:00:00.000000000 Z
12
+ date: 2018-12-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json_schema
@@ -37,14 +37,28 @@ dependencies:
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.6
40
+ version: '1.5'
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 2.0.6
47
+ version: '1.5'
48
+ - !ruby/object:Gem::Dependency
49
+ name: openapi_parser
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.1.5
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 0.1.5
48
62
  - !ruby/object:Gem::Dependency
49
63
  name: minitest
50
64
  requirement: !ruby/object:Gem::Requirement
@@ -158,6 +172,7 @@ files:
158
172
  - lib/committee/drivers.rb
159
173
  - lib/committee/drivers/hyper_schema.rb
160
174
  - lib/committee/drivers/open_api_2.rb
175
+ - lib/committee/drivers/open_api_3.rb
161
176
  - lib/committee/errors.rb
162
177
  - lib/committee/middleware/base.rb
163
178
  - lib/committee/middleware/request_validation.rb
@@ -165,11 +180,18 @@ files:
165
180
  - lib/committee/middleware/stub.rb
166
181
  - lib/committee/parameter_coercer.rb
167
182
  - lib/committee/request_unpacker.rb
168
- - lib/committee/request_validator.rb
169
- - lib/committee/response_generator.rb
170
- - lib/committee/response_validator.rb
171
- - lib/committee/router.rb
172
- - lib/committee/string_params_coercer.rb
183
+ - lib/committee/schema_validator/hyper_schema.rb
184
+ - lib/committee/schema_validator/hyper_schema/request_validator.rb
185
+ - lib/committee/schema_validator/hyper_schema/response_generator.rb
186
+ - lib/committee/schema_validator/hyper_schema/response_validator.rb
187
+ - lib/committee/schema_validator/hyper_schema/router.rb
188
+ - lib/committee/schema_validator/hyper_schema/string_params_coercer.rb
189
+ - lib/committee/schema_validator/open_api_3.rb
190
+ - lib/committee/schema_validator/open_api_3/operation_wrapper.rb
191
+ - lib/committee/schema_validator/open_api_3/request_validator.rb
192
+ - lib/committee/schema_validator/open_api_3/response_validator.rb
193
+ - lib/committee/schema_validator/open_api_3/router.rb
194
+ - lib/committee/schema_validator/option.rb
173
195
  - lib/committee/test/methods.rb
174
196
  - lib/committee/validation_error.rb
175
197
  - test/bin/committee_stub_test.rb
@@ -177,18 +199,24 @@ files:
177
199
  - test/committee_test.rb
178
200
  - test/drivers/hyper_schema_test.rb
179
201
  - test/drivers/open_api_2_test.rb
202
+ - test/drivers/open_api_3_test.rb
180
203
  - test/drivers_test.rb
181
204
  - test/middleware/base_test.rb
205
+ - test/middleware/request_validation_open_api_3_test.rb
182
206
  - test/middleware/request_validation_test.rb
207
+ - test/middleware/response_validation_open_api_3_test.rb
183
208
  - test/middleware/response_validation_test.rb
184
209
  - test/middleware/stub_test.rb
185
210
  - test/parameter_coercer_test.rb
186
211
  - test/request_unpacker_test.rb
187
- - test/request_validator_test.rb
188
- - test/response_generator_test.rb
189
- - test/response_validator_test.rb
190
- - test/router_test.rb
191
- - test/string_params_coercer_test.rb
212
+ - test/schema_validator/hyper_schema/request_validator_test.rb
213
+ - test/schema_validator/hyper_schema/response_generator_test.rb
214
+ - test/schema_validator/hyper_schema/response_validator_test.rb
215
+ - test/schema_validator/hyper_schema/router_test.rb
216
+ - test/schema_validator/hyper_schema/string_params_coercer_test.rb
217
+ - test/schema_validator/open_api_3/operation_wrapper_test.rb
218
+ - test/schema_validator/open_api_3/request_validator_test.rb
219
+ - test/schema_validator/open_api_3/response_validator_test.rb
192
220
  - test/test/methods_new_version_test.rb
193
221
  - test/test/methods_test.rb
194
222
  - test/test_helper.rb
@@ -205,15 +233,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
233
  requirements:
206
234
  - - ">="
207
235
  - !ruby/object:Gem::Version
208
- version: 2.0.0
236
+ version: 2.3.0
209
237
  required_rubygems_version: !ruby/object:Gem::Requirement
210
238
  requirements:
211
- - - ">="
239
+ - - ">"
212
240
  - !ruby/object:Gem::Version
213
- version: '0'
241
+ version: 1.3.1
214
242
  requirements: []
215
243
  rubyforge_project:
216
- rubygems_version: 2.7.7
244
+ rubygems_version: 2.4.5.1
217
245
  signing_key:
218
246
  specification_version: 4
219
247
  summary: A collection of Rack middleware to support JSON Schema.