committee 1.15.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +5 -5
  2. data/bin/committee-stub +11 -38
  3. data/lib/committee/bin/committee_stub.rb +67 -0
  4. data/lib/committee/drivers/driver.rb +47 -0
  5. data/lib/committee/drivers/hyper_schema/driver.rb +105 -0
  6. data/lib/committee/drivers/hyper_schema/link.rb +68 -0
  7. data/lib/committee/drivers/hyper_schema/schema.rb +22 -0
  8. data/lib/committee/drivers/hyper_schema.rb +12 -0
  9. data/lib/committee/drivers/open_api_2/driver.rb +252 -0
  10. data/lib/committee/drivers/open_api_2/header_schema_builder.rb +33 -0
  11. data/lib/committee/drivers/open_api_2/link.rb +36 -0
  12. data/lib/committee/drivers/open_api_2/parameter_schema_builder.rb +83 -0
  13. data/lib/committee/drivers/open_api_2/schema.rb +26 -0
  14. data/lib/committee/drivers/open_api_2/schema_builder.rb +33 -0
  15. data/lib/committee/drivers/open_api_2.rb +13 -0
  16. data/lib/committee/drivers/open_api_3/driver.rb +51 -0
  17. data/lib/committee/drivers/open_api_3/schema.rb +41 -0
  18. data/lib/committee/drivers/open_api_3.rb +11 -0
  19. data/lib/committee/drivers/schema.rb +23 -0
  20. data/lib/committee/drivers.rb +84 -0
  21. data/lib/committee/errors.rb +17 -0
  22. data/lib/committee/middleware/base.rb +46 -29
  23. data/lib/committee/middleware/request_validation.rb +31 -49
  24. data/lib/committee/middleware/response_validation.rb +48 -25
  25. data/lib/committee/middleware/stub.rb +62 -37
  26. data/lib/committee/middleware.rb +11 -0
  27. data/lib/committee/request_unpacker.rb +58 -50
  28. data/lib/committee/schema_validator/hyper_schema/parameter_coercer.rb +79 -0
  29. data/lib/committee/schema_validator/hyper_schema/request_validator.rb +55 -0
  30. data/lib/committee/schema_validator/hyper_schema/response_generator.rb +102 -0
  31. data/lib/committee/schema_validator/hyper_schema/response_validator.rb +89 -0
  32. data/lib/committee/schema_validator/hyper_schema/router.rb +46 -0
  33. data/lib/committee/schema_validator/hyper_schema/string_params_coercer.rb +105 -0
  34. data/lib/committee/schema_validator/hyper_schema.rb +119 -0
  35. data/lib/committee/schema_validator/open_api_3/operation_wrapper.rb +139 -0
  36. data/lib/committee/schema_validator/open_api_3/request_validator.rb +52 -0
  37. data/lib/committee/schema_validator/open_api_3/response_validator.rb +29 -0
  38. data/lib/committee/schema_validator/open_api_3/router.rb +45 -0
  39. data/lib/committee/schema_validator/open_api_3.rb +120 -0
  40. data/lib/committee/schema_validator/option.rb +60 -0
  41. data/lib/committee/schema_validator.rb +23 -0
  42. data/lib/committee/test/methods.rb +68 -38
  43. data/lib/committee/test/schema_coverage.rb +101 -0
  44. data/lib/committee/utils.rb +28 -0
  45. data/lib/committee/validation_error.rb +5 -2
  46. data/lib/committee/version.rb +5 -0
  47. data/lib/committee.rb +31 -18
  48. data/test/bin/committee_stub_test.rb +57 -0
  49. data/test/bin_test.rb +25 -0
  50. data/test/committee_test.rb +77 -0
  51. data/test/drivers/hyper_schema/driver_test.rb +49 -0
  52. data/test/drivers/hyper_schema/link_test.rb +56 -0
  53. data/test/drivers/open_api_2/driver_test.rb +156 -0
  54. data/test/drivers/open_api_2/header_schema_builder_test.rb +26 -0
  55. data/test/drivers/open_api_2/link_test.rb +52 -0
  56. data/test/drivers/open_api_2/parameter_schema_builder_test.rb +195 -0
  57. data/test/drivers/open_api_3/driver_test.rb +84 -0
  58. data/test/drivers_test.rb +154 -0
  59. data/test/middleware/base_test.rb +96 -7
  60. data/test/middleware/request_validation_open_api_3_test.rb +626 -0
  61. data/test/middleware/request_validation_test.rb +423 -32
  62. data/test/middleware/response_validation_open_api_3_test.rb +291 -0
  63. data/test/middleware/response_validation_test.rb +125 -23
  64. data/test/middleware/stub_test.rb +81 -20
  65. data/test/request_unpacker_test.rb +126 -52
  66. data/test/schema_validator/hyper_schema/parameter_coercer_test.rb +111 -0
  67. data/test/schema_validator/hyper_schema/request_validator_test.rb +151 -0
  68. data/test/schema_validator/hyper_schema/response_generator_test.rb +142 -0
  69. data/test/{response_validator_test.rb → schema_validator/hyper_schema/response_validator_test.rb} +43 -6
  70. data/test/schema_validator/hyper_schema/router_test.rb +88 -0
  71. data/test/schema_validator/hyper_schema/string_params_coercer_test.rb +137 -0
  72. data/test/schema_validator/open_api_3/operation_wrapper_test.rb +218 -0
  73. data/test/schema_validator/open_api_3/request_validator_test.rb +110 -0
  74. data/test/schema_validator/open_api_3/response_validator_test.rb +92 -0
  75. data/test/test/methods_new_version_test.rb +97 -0
  76. data/test/test/methods_test.rb +334 -27
  77. data/test/test/schema_coverage_test.rb +216 -0
  78. data/test/test_helper.rb +108 -1
  79. data/test/validation_error_test.rb +3 -1
  80. metadata +190 -27
  81. data/lib/committee/query_params_coercer.rb +0 -45
  82. data/lib/committee/request_validator.rb +0 -44
  83. data/lib/committee/response_generator.rb +0 -35
  84. data/lib/committee/response_validator.rb +0 -59
  85. data/lib/committee/router.rb +0 -62
  86. data/test/query_params_coercer_test.rb +0 -70
  87. data/test/request_validator_test.rb +0 -103
  88. data/test/response_generator_test.rb +0 -61
  89. data/test/router_test.rb +0 -38
@@ -0,0 +1,216 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ describe Committee::Test::SchemaCoverage do
6
+ before do
7
+ @schema_coverage = Committee::Test::SchemaCoverage.new(open_api_3_coverage_schema)
8
+ end
9
+
10
+ describe 'recording coverage' do
11
+ def response_as_str(response)
12
+ [:path, :method, :status].map { |key| response[key] }.join(' ')
13
+ end
14
+
15
+ def uncovered_responses
16
+ @schema_coverage.report_flatten[:responses].select { |r| !r[:is_covered] }.map { |r| response_as_str(r) }
17
+ end
18
+
19
+ def covered_responses
20
+ @schema_coverage.report_flatten[:responses].select { |r| r[:is_covered] }.map { |r| response_as_str(r) }
21
+ end
22
+ it 'can record and report coverage properly' do
23
+ @schema_coverage.update_response_coverage!('/posts', 'get', '200')
24
+ assert_equal([
25
+ '/posts get 200',
26
+ ], covered_responses)
27
+ assert_equal([
28
+ '/threads/{id} get 200',
29
+ '/posts get 404',
30
+ '/posts get default',
31
+ '/posts post 200',
32
+ '/likes post 200',
33
+ '/likes delete 200',
34
+ ], uncovered_responses)
35
+
36
+ @schema_coverage.update_response_coverage!('/likes', 'post', '200')
37
+ assert_equal([
38
+ '/posts get 200',
39
+ '/likes post 200',
40
+ ], covered_responses)
41
+ assert_equal([
42
+ '/threads/{id} get 200',
43
+ '/posts get 404',
44
+ '/posts get default',
45
+ '/posts post 200',
46
+ '/likes delete 200',
47
+ ], uncovered_responses)
48
+
49
+ @schema_coverage.update_response_coverage!('/likes', 'delete', '200')
50
+ assert_equal([
51
+ '/posts get 200',
52
+ '/likes post 200',
53
+ '/likes delete 200',
54
+ ], covered_responses)
55
+ assert_equal([
56
+ '/threads/{id} get 200',
57
+ '/posts get 404',
58
+ '/posts get default',
59
+ '/posts post 200',
60
+ ], uncovered_responses)
61
+
62
+ @schema_coverage.update_response_coverage!('/posts', 'get', '422')
63
+ assert_equal([
64
+ '/posts get 200',
65
+ '/posts get default',
66
+ '/likes post 200',
67
+ '/likes delete 200',
68
+ ], covered_responses)
69
+ assert_equal([
70
+ '/threads/{id} get 200',
71
+ '/posts get 404',
72
+ '/posts post 200',
73
+ ], uncovered_responses)
74
+
75
+ assert_equal({
76
+ '/threads/{id}' => {
77
+ 'get' => {
78
+ 'responses' => {
79
+ '200' => false,
80
+ },
81
+ },
82
+ },
83
+ '/posts' => {
84
+ 'get' => {
85
+ 'responses' => {
86
+ '200' => true,
87
+ '404' => false,
88
+ 'default' => true,
89
+ },
90
+ },
91
+ 'post' => {
92
+ 'responses' => {
93
+ '200' => false,
94
+ },
95
+ },
96
+ },
97
+ '/likes' => {
98
+ 'post' => {
99
+ 'responses' => {
100
+ '200' => true,
101
+ },
102
+ },
103
+ 'delete' => {
104
+ 'responses' => {
105
+ '200' => true,
106
+ },
107
+ },
108
+ },
109
+ }, @schema_coverage.report)
110
+
111
+ @schema_coverage.update_response_coverage!('/posts', 'post', '200')
112
+ @schema_coverage.update_response_coverage!('/posts', 'get', '404')
113
+ @schema_coverage.update_response_coverage!('/threads/{id}', 'get', '200')
114
+ assert_equal([
115
+ '/threads/{id} get 200',
116
+ '/posts get 200',
117
+ '/posts get 404',
118
+ '/posts get default',
119
+ '/posts post 200',
120
+ '/likes post 200',
121
+ '/likes delete 200',
122
+ ], covered_responses)
123
+ assert_equal([], uncovered_responses)
124
+ end
125
+ end
126
+
127
+ describe '.merge_report' do
128
+ it 'can merge 2 coverage reports together' do
129
+ report = Committee::Test::SchemaCoverage.merge_report(
130
+ {
131
+ '/posts' => {
132
+ 'get' => {
133
+ 'responses' => {
134
+ '200' => true,
135
+ '404' => false,
136
+ },
137
+ },
138
+ 'post' => {
139
+ 'responses' => {
140
+ '200' => false,
141
+ },
142
+ },
143
+ },
144
+ '/likes' => {
145
+ 'post' => {
146
+ 'responses' => {
147
+ '200' => true,
148
+ },
149
+ },
150
+ },
151
+ },
152
+ {
153
+ '/posts' => {
154
+ 'get' => {
155
+ 'responses' => {
156
+ '200' => true,
157
+ '404' => true,
158
+ },
159
+ },
160
+ 'post' => {
161
+ 'responses' => {
162
+ '200' => false,
163
+ },
164
+ },
165
+ },
166
+ '/likes' => {
167
+ 'post' => {
168
+ 'responses' => {
169
+ '200' => false,
170
+ '400' => false,
171
+ },
172
+ },
173
+ },
174
+ '/users' => {
175
+ 'get' => {
176
+ 'responses' => {
177
+ '200' => true,
178
+ },
179
+ },
180
+ },
181
+ },
182
+ )
183
+
184
+ assert_equal({
185
+ '/posts' => {
186
+ 'get' => {
187
+ 'responses' => {
188
+ '200' => true,
189
+ '404' => true,
190
+ },
191
+ },
192
+ 'post' => {
193
+ 'responses' => {
194
+ '200' => false,
195
+ },
196
+ },
197
+ },
198
+ '/likes' => {
199
+ 'post' => {
200
+ 'responses' => {
201
+ '200' => true,
202
+ '400' => false,
203
+ },
204
+ },
205
+ },
206
+ '/users' => {
207
+ 'get' => {
208
+ 'responses' => {
209
+ '200' => true,
210
+ },
211
+ },
212
+ },
213
+ }, report)
214
+ end
215
+ end
216
+ end
data/test/test_helper.rb CHANGED
@@ -1,13 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov'
4
+
5
+ SimpleCov.start do
6
+ # We do our utmost to test our executables by modularizing them into
7
+ # testable pieces, but testing them to completion is nearly impossible as
8
+ # far as I can tell, so include them in our tests but don't calculate
9
+ # coverage.
10
+ add_filter "/bin/"
11
+ add_filter "/test/"
12
+
13
+ # This library has a pretty modest number of lines, so let's try to stick
14
+ # to a 99% coverage target for a while and see what happens.
15
+ # We can't use 100% because old rack version doesn't support media_type and it's not testable :(
16
+ # https://github.com/interagent/committee/pull/360/files#diff-ce1125b6594690a88a70dbe2869f7fcfa2962c2bca80751f3720888920e2dfabR54
17
+ minimum_coverage 99
18
+ end
19
+
1
20
  require "minitest"
2
21
  require "minitest/spec"
3
22
  require "minitest/autorun"
4
- #require "pry-rescue/minitest"
5
23
  require "rack/test"
6
24
  require "rr"
25
+ require "pry"
26
+ require "stringio"
7
27
 
8
28
  require_relative "../lib/committee"
9
29
 
30
+ # The OpenAPI sample specification provided directly from the organization uses
31
+ # a couple custom "format" values for JSON schema, namely "int32" and "int64".
32
+ # Provide basic definitions for them here so that we don't error when trying to
33
+ # parse the sample.
34
+ JsonSchema.configure do |c|
35
+ c.register_format 'int32', ->(data) {}
36
+ c.register_format 'int64', ->(data) {}
37
+ end
38
+
39
+ # For our hyper-schema example.
10
40
  ValidApp = {
11
41
  "maintenance" => false,
12
42
  "name" => "example",
13
43
  }.freeze
44
+
45
+ # For our OpenAPI example.
46
+ ValidPet = {
47
+ "id" => 123,
48
+ "name" => "example",
49
+ "tag" => "tag-123",
50
+ }.freeze
51
+
52
+ def hyper_schema
53
+ @hyper_schema ||= Committee::Drivers.load_from_json(hyper_schema_schema_path)
54
+ end
55
+
56
+ def open_api_2_schema
57
+ @open_api_2_schema ||= Committee::Drivers.load_from_file(open_api_2_schema_path)
58
+ end
59
+
60
+ def open_api_2_form_schema
61
+ @open_api_2_form_schema ||= Committee::Drivers.load_from_file(open_api_2_form_schema_path)
62
+ end
63
+
64
+ def open_api_3_schema
65
+ @open_api_3_schema ||= Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true})
66
+ end
67
+
68
+ def open_api_3_coverage_schema
69
+ @open_api_3_coverage_schema ||= Committee::Drivers.load_from_file(open_api_3_coverage_schema_path, parser_options:{strict_reference_validation: true})
70
+ end
71
+
72
+ # Don't cache this because we'll often manipulate the created hash in tests.
73
+ def hyper_schema_data
74
+ JSON.parse(File.read(hyper_schema_schema_path))
75
+ end
76
+
77
+ # Don't cache this because we'll often manipulate the created hash in tests.
78
+ def open_api_2_data
79
+ JSON.parse(File.read(open_api_2_schema_path))
80
+ end
81
+
82
+ def open_api_2_form_data
83
+ JSON.parse(File.read(open_api_2_form_schema_path))
84
+ end
85
+
86
+ def open_api_3_data
87
+ if YAML.respond_to?(:unsafe_load_file)
88
+ YAML.unsafe_load_file(open_api_3_schema_path)
89
+ else
90
+ YAML.load_file(open_api_3_schema_path)
91
+ end
92
+ end
93
+
94
+ def hyper_schema_schema_path
95
+ "./test/data/hyperschema/paas.json"
96
+ end
97
+
98
+ def open_api_2_schema_path
99
+ "./test/data/openapi2/petstore-expanded.json"
100
+ end
101
+
102
+ def open_api_2_form_schema_path
103
+ "./test/data/openapi2/petstore-expanded-form.json"
104
+ end
105
+
106
+ def open_api_3_schema_path
107
+ "./test/data/openapi3/normal.yaml"
108
+ end
109
+
110
+ def open_api_3_coverage_schema_path
111
+ "./test/data/openapi3/coverage.yaml"
112
+ end
113
+
114
+ def open_api_3_0_1_schema_path
115
+ "./test/data/openapi3/3_0_1.yaml"
116
+ end
117
+
118
+ def open_api_3_invalid_reference_path
119
+ "./test/data/openapi3/invalid_reference.yaml"
120
+ end
@@ -1,4 +1,6 @@
1
- require_relative "test_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
2
4
 
3
5
  describe Committee::ValidationError do
4
6
  before do
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: committee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandur
8
8
  - geemus (Wesley Beary)
9
- autorequire:
9
+ - ota42y
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2016-09-13 00:00:00.000000000 Z
13
+ date: 2023-01-28 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: json_schema
@@ -17,20 +18,20 @@ dependencies:
17
18
  requirements:
18
19
  - - "~>"
19
20
  - !ruby/object:Gem::Version
20
- version: '0.6'
21
+ version: '0.14'
21
22
  - - ">="
22
23
  - !ruby/object:Gem::Version
23
- version: 0.6.1
24
+ version: 0.14.3
24
25
  type: :runtime
25
26
  prerelease: false
26
27
  version_requirements: !ruby/object:Gem::Requirement
27
28
  requirements:
28
29
  - - "~>"
29
30
  - !ruby/object:Gem::Version
30
- version: '0.6'
31
+ version: '0.14'
31
32
  - - ">="
32
33
  - !ruby/object:Gem::Version
33
- version: 0.6.1
34
+ version: 0.14.3
34
35
  - !ruby/object:Gem::Dependency
35
36
  name: rack
36
37
  requirement: !ruby/object:Gem::Requirement
@@ -45,6 +46,20 @@ dependencies:
45
46
  - - ">="
46
47
  - !ruby/object:Gem::Version
47
48
  version: '1.5'
49
+ - !ruby/object:Gem::Dependency
50
+ name: openapi_parser
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.0'
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: minitest
50
65
  requirement: !ruby/object:Gem::Requirement
@@ -65,28 +80,28 @@ dependencies:
65
80
  requirements:
66
81
  - - "~>"
67
82
  - !ruby/object:Gem::Version
68
- version: '0.6'
83
+ version: '0.8'
69
84
  type: :development
70
85
  prerelease: false
71
86
  version_requirements: !ruby/object:Gem::Requirement
72
87
  requirements:
73
88
  - - "~>"
74
89
  - !ruby/object:Gem::Version
75
- version: '0.6'
90
+ version: '0.8'
76
91
  - !ruby/object:Gem::Dependency
77
92
  name: rake
78
93
  requirement: !ruby/object:Gem::Requirement
79
94
  requirements:
80
95
  - - "~>"
81
96
  - !ruby/object:Gem::Version
82
- version: '10.3'
97
+ version: '12.3'
83
98
  type: :development
84
99
  prerelease: false
85
100
  version_requirements: !ruby/object:Gem::Requirement
86
101
  requirements:
87
102
  - - "~>"
88
103
  - !ruby/object:Gem::Version
89
- version: '10.3'
104
+ version: '12.3'
90
105
  - !ruby/object:Gem::Dependency
91
106
  name: rr
92
107
  requirement: !ruby/object:Gem::Requirement
@@ -101,10 +116,109 @@ dependencies:
101
116
  - - "~>"
102
117
  - !ruby/object:Gem::Version
103
118
  version: '1.1'
104
- description:
119
+ - !ruby/object:Gem::Dependency
120
+ name: pry
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: pry-byebug
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: rubocop
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "<"
152
+ - !ruby/object:Gem::Version
153
+ version: 1.13.0
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "<"
159
+ - !ruby/object:Gem::Version
160
+ version: 1.13.0
161
+ - !ruby/object:Gem::Dependency
162
+ name: rubocop-performance
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: rubocop-minitest
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ - !ruby/object:Gem::Dependency
190
+ name: rubocop-rake
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ type: :development
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ - !ruby/object:Gem::Dependency
204
+ name: simplecov
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ description:
105
218
  email:
106
219
  - brandur@mutelight.org
107
220
  - geemus+github@gmail.com
221
+ - ota42y@gmail.com
108
222
  executables:
109
223
  - committee-stub
110
224
  extensions: []
@@ -112,37 +226,87 @@ extra_rdoc_files: []
112
226
  files:
113
227
  - bin/committee-stub
114
228
  - lib/committee.rb
229
+ - lib/committee/bin/committee_stub.rb
230
+ - lib/committee/drivers.rb
231
+ - lib/committee/drivers/driver.rb
232
+ - lib/committee/drivers/hyper_schema.rb
233
+ - lib/committee/drivers/hyper_schema/driver.rb
234
+ - lib/committee/drivers/hyper_schema/link.rb
235
+ - lib/committee/drivers/hyper_schema/schema.rb
236
+ - lib/committee/drivers/open_api_2.rb
237
+ - lib/committee/drivers/open_api_2/driver.rb
238
+ - lib/committee/drivers/open_api_2/header_schema_builder.rb
239
+ - lib/committee/drivers/open_api_2/link.rb
240
+ - lib/committee/drivers/open_api_2/parameter_schema_builder.rb
241
+ - lib/committee/drivers/open_api_2/schema.rb
242
+ - lib/committee/drivers/open_api_2/schema_builder.rb
243
+ - lib/committee/drivers/open_api_3.rb
244
+ - lib/committee/drivers/open_api_3/driver.rb
245
+ - lib/committee/drivers/open_api_3/schema.rb
246
+ - lib/committee/drivers/schema.rb
115
247
  - lib/committee/errors.rb
248
+ - lib/committee/middleware.rb
116
249
  - lib/committee/middleware/base.rb
117
250
  - lib/committee/middleware/request_validation.rb
118
251
  - lib/committee/middleware/response_validation.rb
119
252
  - lib/committee/middleware/stub.rb
120
- - lib/committee/query_params_coercer.rb
121
253
  - lib/committee/request_unpacker.rb
122
- - lib/committee/request_validator.rb
123
- - lib/committee/response_generator.rb
124
- - lib/committee/response_validator.rb
125
- - lib/committee/router.rb
254
+ - lib/committee/schema_validator.rb
255
+ - lib/committee/schema_validator/hyper_schema.rb
256
+ - lib/committee/schema_validator/hyper_schema/parameter_coercer.rb
257
+ - lib/committee/schema_validator/hyper_schema/request_validator.rb
258
+ - lib/committee/schema_validator/hyper_schema/response_generator.rb
259
+ - lib/committee/schema_validator/hyper_schema/response_validator.rb
260
+ - lib/committee/schema_validator/hyper_schema/router.rb
261
+ - lib/committee/schema_validator/hyper_schema/string_params_coercer.rb
262
+ - lib/committee/schema_validator/open_api_3.rb
263
+ - lib/committee/schema_validator/open_api_3/operation_wrapper.rb
264
+ - lib/committee/schema_validator/open_api_3/request_validator.rb
265
+ - lib/committee/schema_validator/open_api_3/response_validator.rb
266
+ - lib/committee/schema_validator/open_api_3/router.rb
267
+ - lib/committee/schema_validator/option.rb
126
268
  - lib/committee/test/methods.rb
269
+ - lib/committee/test/schema_coverage.rb
270
+ - lib/committee/utils.rb
127
271
  - lib/committee/validation_error.rb
272
+ - lib/committee/version.rb
273
+ - test/bin/committee_stub_test.rb
274
+ - test/bin_test.rb
275
+ - test/committee_test.rb
276
+ - test/drivers/hyper_schema/driver_test.rb
277
+ - test/drivers/hyper_schema/link_test.rb
278
+ - test/drivers/open_api_2/driver_test.rb
279
+ - test/drivers/open_api_2/header_schema_builder_test.rb
280
+ - test/drivers/open_api_2/link_test.rb
281
+ - test/drivers/open_api_2/parameter_schema_builder_test.rb
282
+ - test/drivers/open_api_3/driver_test.rb
283
+ - test/drivers_test.rb
128
284
  - test/middleware/base_test.rb
285
+ - test/middleware/request_validation_open_api_3_test.rb
129
286
  - test/middleware/request_validation_test.rb
287
+ - test/middleware/response_validation_open_api_3_test.rb
130
288
  - test/middleware/response_validation_test.rb
131
289
  - test/middleware/stub_test.rb
132
- - test/query_params_coercer_test.rb
133
290
  - test/request_unpacker_test.rb
134
- - test/request_validator_test.rb
135
- - test/response_generator_test.rb
136
- - test/response_validator_test.rb
137
- - test/router_test.rb
291
+ - test/schema_validator/hyper_schema/parameter_coercer_test.rb
292
+ - test/schema_validator/hyper_schema/request_validator_test.rb
293
+ - test/schema_validator/hyper_schema/response_generator_test.rb
294
+ - test/schema_validator/hyper_schema/response_validator_test.rb
295
+ - test/schema_validator/hyper_schema/router_test.rb
296
+ - test/schema_validator/hyper_schema/string_params_coercer_test.rb
297
+ - test/schema_validator/open_api_3/operation_wrapper_test.rb
298
+ - test/schema_validator/open_api_3/request_validator_test.rb
299
+ - test/schema_validator/open_api_3/response_validator_test.rb
300
+ - test/test/methods_new_version_test.rb
138
301
  - test/test/methods_test.rb
302
+ - test/test/schema_coverage_test.rb
139
303
  - test/test_helper.rb
140
304
  - test/validation_error_test.rb
141
305
  homepage: https://github.com/interagent/committee
142
306
  licenses:
143
307
  - MIT
144
308
  metadata: {}
145
- post_install_message:
309
+ post_install_message:
146
310
  rdoc_options: []
147
311
  require_paths:
148
312
  - lib
@@ -150,16 +314,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
314
  requirements:
151
315
  - - ">="
152
316
  - !ruby/object:Gem::Version
153
- version: '0'
317
+ version: 2.6.0
154
318
  required_rubygems_version: !ruby/object:Gem::Requirement
155
319
  requirements:
156
320
  - - ">="
157
321
  - !ruby/object:Gem::Version
158
322
  version: '0'
159
323
  requirements: []
160
- rubyforge_project:
161
- rubygems_version: 2.5.1
162
- signing_key:
324
+ rubygems_version: 3.3.3
325
+ signing_key:
163
326
  specification_version: 4
164
327
  summary: A collection of Rack middleware to support JSON Schema.
165
328
  test_files: []