committee_firetail 5.0.0

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 (80) hide show
  1. checksums.yaml +7 -0
  2. data/bin/committee-stub +23 -0
  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 +36 -0
  22. data/lib/committee/middleware/base.rb +57 -0
  23. data/lib/committee/middleware/request_validation.rb +41 -0
  24. data/lib/committee/middleware/response_validation.rb +58 -0
  25. data/lib/committee/middleware/stub.rb +75 -0
  26. data/lib/committee/middleware.rb +11 -0
  27. data/lib/committee/request_unpacker.rb +91 -0
  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 +84 -0
  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 +26 -0
  46. data/lib/committee/version.rb +5 -0
  47. data/lib/committee.rb +40 -0
  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 +130 -0
  60. data/test/middleware/request_validation_open_api_3_test.rb +626 -0
  61. data/test/middleware/request_validation_test.rb +516 -0
  62. data/test/middleware/response_validation_open_api_3_test.rb +291 -0
  63. data/test/middleware/response_validation_test.rb +189 -0
  64. data/test/middleware/stub_test.rb +145 -0
  65. data/test/request_unpacker_test.rb +200 -0
  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/schema_validator/hyper_schema/response_validator_test.rb +118 -0
  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 +363 -0
  77. data/test/test/schema_coverage_test.rb +216 -0
  78. data/test/test_helper.rb +120 -0
  79. data/test/validation_error_test.rb +25 -0
  80. metadata +328 -0
@@ -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
@@ -0,0 +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
+
20
+ require "minitest"
21
+ require "minitest/spec"
22
+ require "minitest/autorun"
23
+ require "rack/test"
24
+ require "rr"
25
+ require "pry"
26
+ require "stringio"
27
+
28
+ require_relative "../lib/committee"
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.
40
+ ValidApp = {
41
+ "maintenance" => false,
42
+ "name" => "example",
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
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ describe Committee::ValidationError do
6
+ before do
7
+ @error = Committee::ValidationError.new(400, :bad_request, "Error")
8
+ end
9
+
10
+ it "creates an error body with the id and message" do
11
+ assert_equal @error.error_body, { id: :bad_request, message: "Error" }
12
+ end
13
+
14
+ it "creates a Rack response object to render" do
15
+ body = { id: :bad_request, message: "Error" }
16
+
17
+ response = [
18
+ 400,
19
+ { "Content-Type" => "application/json" },
20
+ [JSON.generate(body)]
21
+ ]
22
+
23
+ assert_equal @error.render, response
24
+ end
25
+ end
metadata ADDED
@@ -0,0 +1,328 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: committee_firetail
3
+ version: !ruby/object:Gem::Version
4
+ version: 5.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Brandur
8
+ - geemus (Wesley Beary)
9
+ - ota42y
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2023-02-28 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json_schema
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.14'
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.14.3
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - "~>"
30
+ - !ruby/object:Gem::Version
31
+ version: '0.14'
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 0.14.3
35
+ - !ruby/object:Gem::Dependency
36
+ name: rack
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '1.5'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '1.5'
49
+ - !ruby/object:Gem::Dependency
50
+ name: openapi_parser_firetail
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'
63
+ - !ruby/object:Gem::Dependency
64
+ name: minitest
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '5.3'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '5.3'
77
+ - !ruby/object:Gem::Dependency
78
+ name: rack-test
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.8'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.8'
91
+ - !ruby/object:Gem::Dependency
92
+ name: rake
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '12.3'
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '12.3'
105
+ - !ruby/object:Gem::Dependency
106
+ name: rr
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '1.1'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '1.1'
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:
218
+ email:
219
+ - brandur@mutelight.org
220
+ - geemus+github@gmail.com
221
+ - ota42y@gmail.com
222
+ executables:
223
+ - committee-stub
224
+ extensions: []
225
+ extra_rdoc_files: []
226
+ files:
227
+ - bin/committee-stub
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
247
+ - lib/committee/errors.rb
248
+ - lib/committee/middleware.rb
249
+ - lib/committee/middleware/base.rb
250
+ - lib/committee/middleware/request_validation.rb
251
+ - lib/committee/middleware/response_validation.rb
252
+ - lib/committee/middleware/stub.rb
253
+ - lib/committee/request_unpacker.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
268
+ - lib/committee/test/methods.rb
269
+ - lib/committee/test/schema_coverage.rb
270
+ - lib/committee/utils.rb
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
284
+ - test/middleware/base_test.rb
285
+ - test/middleware/request_validation_open_api_3_test.rb
286
+ - test/middleware/request_validation_test.rb
287
+ - test/middleware/response_validation_open_api_3_test.rb
288
+ - test/middleware/response_validation_test.rb
289
+ - test/middleware/stub_test.rb
290
+ - test/request_unpacker_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
301
+ - test/test/methods_test.rb
302
+ - test/test/schema_coverage_test.rb
303
+ - test/test_helper.rb
304
+ - test/validation_error_test.rb
305
+ homepage: https://github.com/interagent/committee
306
+ licenses:
307
+ - MIT
308
+ metadata: {}
309
+ post_install_message:
310
+ rdoc_options: []
311
+ require_paths:
312
+ - lib
313
+ required_ruby_version: !ruby/object:Gem::Requirement
314
+ requirements:
315
+ - - ">="
316
+ - !ruby/object:Gem::Version
317
+ version: 2.6.0
318
+ required_rubygems_version: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - ">="
321
+ - !ruby/object:Gem::Version
322
+ version: '0'
323
+ requirements: []
324
+ rubygems_version: 3.1.6
325
+ signing_key:
326
+ specification_version: 4
327
+ summary: A collection of Rack middleware to support JSON Schema.
328
+ test_files: []