committee 5.1.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d38440a7b31b31d429a47b744f397333489d09dbae1dbf16bcd74dd01124d68d
4
- data.tar.gz: a7d1b5a22c1f415c6eb2bae32b6666df4558c3361f7685c50926499e2e74575e
3
+ metadata.gz: 95c313e8694c8ad00b4f0ed75ac173f177cb62c3cc18494a946df9b9066abbaa
4
+ data.tar.gz: 7080a9ec40c56d2d47fde358217068ac3dcc907528ac359e2a94089f9b9f068e
5
5
  SHA512:
6
- metadata.gz: 5314750901b395a42cdb9efe6c3a2992bb67a4d7561a0937422d48574f7705944a0b7317ccc5b10eda510734a8dac2375eaf27c1932be26ea1000662b14cf31d
7
- data.tar.gz: 2ec012b81b43e319df14fbaefeb72b38bc2f065358084d479e927d68c58734e44c6b3d252436dc3fcc296dbfeb0c7798105fb52f3aca7325904673f7cf9647e4
6
+ metadata.gz: 4530289393371c110c67564e277dbfdaab9f6a83aff9cc3e8c625ee83a6fabb3fb4c1c0abd3e93d83577a8204143672ccab998e50aabccbc866cb619c43f698c
7
+ data.tar.gz: 91feff9fb8ee526fe0715ce12e570fe53782750ad823a44a31f549d738c0ce9d65421a1323568992e43dd16a4e202130fbd3f020ac836eab5a19a0626a59d5d0
@@ -70,6 +70,12 @@ module Committee
70
70
  return Committee::Drivers::OpenAPI3::Driver.new.parse(openapi)
71
71
  end
72
72
 
73
+ if (version = hash['openapi'])
74
+ if Gem::Version.new(version) >= Gem::Version.new("3.1")
75
+ raise OpenAPI3Unsupported.new('Committee does not support OpenAPI 3.1+ yet')
76
+ end
77
+ end
78
+
73
79
  driver = if hash['swagger'] == '2.0'
74
80
  Committee::Drivers::OpenAPI2::Driver.new
75
81
  else
@@ -6,7 +6,7 @@ module Committee
6
6
  def initialize(app, options={})
7
7
  super
8
8
 
9
- @strict = options[:strict]
9
+ @strict = options[:strict]
10
10
  end
11
11
 
12
12
  def handle(request)
@@ -87,7 +87,7 @@ module Committee
87
87
 
88
88
  request.env[validator_option.headers_key] = unpacker.unpack_headers(request)
89
89
 
90
- request_param, is_form_params = unpacker.unpack_request_params(request)
90
+ request_param, _is_form_params = unpacker.unpack_request_params(request)
91
91
  request.env[validator_option.request_body_hash_key] = request_param
92
92
  request.env[validator_option.path_hash_key] = coerce_path_params
93
93
 
@@ -29,30 +29,30 @@ module Committee
29
29
 
30
30
  def initialize(options, schema, schema_type)
31
31
  # Non-boolean options
32
- @headers_key = options[:headers_key] || "committee.headers"
33
- @params_key = options[:params_key] || "committee.params"
34
- @query_hash_key = options[:query_hash_key] || "committee.query_hash"
35
- @path_hash_key = options[:path_hash_key] || "committee.path_hash"
32
+ @headers_key = options[:headers_key] || "committee.headers"
33
+ @params_key = options[:params_key] || "committee.params"
34
+ @query_hash_key = options[:query_hash_key] || "committee.query_hash"
35
+ @path_hash_key = options[:path_hash_key] || "committee.path_hash"
36
36
  @request_body_hash_key = options[:request_body_hash_key] || "committee.request_body_hash"
37
37
 
38
- @prefix = options[:prefix]
38
+ @prefix = options[:prefix]
39
39
 
40
40
  # Boolean options and have a common value by default
41
- @allow_form_params = options.fetch(:allow_form_params, true)
42
- @allow_query_params = options.fetch(:allow_query_params, true)
43
- @check_content_type = options.fetch(:check_content_type, true)
44
- @check_header = options.fetch(:check_header, true)
45
- @coerce_recursive = options.fetch(:coerce_recursive, true)
46
- @optimistic_json = options.fetch(:optimistic_json, false)
47
- @parse_response_by_content_type = options.fetch(:parse_response_by_content_type, true)
41
+ @allow_form_params = options.fetch(:allow_form_params, true)
42
+ @allow_query_params = options.fetch(:allow_query_params, true)
43
+ @check_content_type = options.fetch(:check_content_type, true)
44
+ @check_header = options.fetch(:check_header, true)
45
+ @coerce_recursive = options.fetch(:coerce_recursive, true)
46
+ @optimistic_json = options.fetch(:optimistic_json, false)
47
+ @parse_response_by_content_type = options.fetch(:parse_response_by_content_type, true)
48
48
  @parameter_overwite_by_rails_rule = options.fetch(:parameter_overwite_by_rails_rule, true)
49
49
 
50
50
  # Boolean options and have a different value by default
51
- @allow_get_body = options.fetch(:allow_get_body, schema.driver.default_allow_get_body)
52
- @coerce_date_times = options.fetch(:coerce_date_times, schema.driver.default_coerce_date_times)
53
- @coerce_form_params = options.fetch(:coerce_form_params, schema.driver.default_coerce_form_params)
54
- @coerce_path_params = options.fetch(:coerce_path_params, schema.driver.default_path_params)
55
- @coerce_query_params = options.fetch(:coerce_query_params, schema.driver.default_query_params)
51
+ @allow_get_body = options.fetch(:allow_get_body, schema.driver.default_allow_get_body)
52
+ @coerce_date_times = options.fetch(:coerce_date_times, schema.driver.default_coerce_date_times)
53
+ @coerce_form_params = options.fetch(:coerce_form_params, schema.driver.default_coerce_form_params)
54
+ @coerce_path_params = options.fetch(:coerce_path_params, schema.driver.default_path_params)
55
+ @coerce_query_params = options.fetch(:coerce_query_params, schema.driver.default_query_params)
56
56
  @validate_success_only = options.fetch(:validate_success_only, schema.driver.default_validate_success_only)
57
57
  end
58
58
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Committee
4
- VERSION = '5.1.0'.freeze
4
+ VERSION = '5.2.0'.freeze
5
5
  end
data/lib/committee.rb CHANGED
@@ -22,7 +22,7 @@ module Committee
22
22
  end
23
23
 
24
24
  def self.warn_deprecated_until_6(cond, message)
25
- raise "remove deprecated!" unless Committee::VERSION.start_with?("5")
25
+ raise "remove deprecated!" unless Committee::VERSION.start_with?("5")
26
26
  warn("[DEPRECATION] #{message}") if cond
27
27
  end
28
28
  end
@@ -44,8 +44,6 @@ describe Committee::Bin::CommitteeStub, "app" do
44
44
 
45
45
  def app
46
46
  options = {}
47
- # TODO: delete when 5.0.0 released because default value changed
48
- options[:parse_response_by_content_type] = false
49
47
 
50
48
  @bin.get_app(hyper_schema, options)
51
49
  end
@@ -19,13 +19,15 @@ describe Committee do
19
19
  old_stderr = $stderr
20
20
  $stderr = StringIO.new
21
21
  begin
22
- stub(Committee).debug? { false }
23
- Committee.log_debug "blah"
24
- assert_equal "", $stderr.string
22
+ Committee.stub(:debug?, false) do
23
+ Committee.log_debug "blah"
24
+ assert_equal "", $stderr.string
25
+ end
25
26
 
26
- stub(Committee).debug? { true }
27
- Committee.log_debug "blah"
28
- assert_equal "blah\n", $stderr.string
27
+ Committee.stub(:debug?, true) do
28
+ Committee.log_debug "blah"
29
+ assert_equal "blah\n", $stderr.string
30
+ end
29
31
  ensure
30
32
  $stderr = old_stderr
31
33
  end
data/test/drivers_test.rb CHANGED
@@ -48,6 +48,13 @@ describe Committee::Drivers do
48
48
  assert_kind_of Committee::Drivers::OpenAPI3::Schema, s
49
49
  end
50
50
 
51
+ it 'fails to load OpenAPI 3.1+' do
52
+ e = assert_raises(Committee::OpenAPI3Unsupported) do
53
+ Committee::Drivers.load_from_file(open_api_3_1_schema_path, parser_options:{strict_reference_validation: true})
54
+ end
55
+ assert_equal 'Committee does not support OpenAPI 3.1+ yet', e.message
56
+ end
57
+
51
58
  it 'fails to load OpenAPI 3 with invalid reference' do
52
59
  parser_options = { strict_reference_validation: true }
53
60
  assert_raises(OpenAPIParser::MissingReferenceError) do
@@ -138,6 +145,13 @@ describe Committee::Drivers do
138
145
  assert_kind_of Committee::Drivers::Schema, s
139
146
  assert_kind_of Committee::Drivers::HyperSchema::Schema, s
140
147
  end
148
+
149
+ it 'fails to load OpenAPI 3.1+' do
150
+ e = assert_raises(Committee::OpenAPI3Unsupported) do
151
+ Committee::Drivers.load_from_data(open_api_3_1_data)
152
+ end
153
+ assert_equal 'Committee does not support OpenAPI 3.1+ yet', e.message
154
+ end
141
155
  end
142
156
  end
143
157
 
@@ -117,9 +117,6 @@ describe Committee::Middleware::Base do
117
117
  private
118
118
 
119
119
  def new_rack_app(options = {})
120
- # TODO: delete when 5.0.0 released because default value changed
121
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
122
-
123
120
  Rack::Builder.new {
124
121
  use Committee::Middleware::RequestValidation, options
125
122
  run lambda { |_|
@@ -615,9 +615,6 @@ describe Committee::Middleware::RequestValidation do
615
615
  end
616
616
 
617
617
  def new_rack_app_with_lambda(check_lambda, options = {})
618
- # TODO: delete when 5.0.0 released because default value changed
619
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
620
-
621
618
  Rack::Builder.new {
622
619
  use Committee::Middleware::RequestValidation, options
623
620
  run check_lambda
@@ -505,9 +505,6 @@ describe Committee::Middleware::RequestValidation do
505
505
 
506
506
 
507
507
  def new_rack_app_with_lambda(check_lambda, options = {})
508
- # TODO: delete when 5.0.0 released because default value changed
509
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
510
-
511
508
  Rack::Builder.new {
512
509
  use Committee::Middleware::RequestValidation, options
513
510
  run check_lambda
@@ -273,9 +273,6 @@ describe Committee::Middleware::ResponseValidation do
273
273
  private
274
274
 
275
275
  def new_response_rack(response, headers = {}, options = {}, rack_options = {})
276
- # TODO: delete when 5.0.0 released because default value changed
277
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
278
-
279
276
  status = rack_options[:status] || 200
280
277
  content_type = rack_options[:content_type] || "application/json"
281
278
  headers = {
@@ -15,14 +15,6 @@ describe Committee::Middleware::ResponseValidation do
15
15
  assert_equal 200, last_response.status
16
16
  end
17
17
 
18
- # TODO: remove 5.0.0
19
- it "passes through a valid response" do
20
- # will show deprecated message
21
- @app = new_rack_app(JSON.generate([ValidApp]), {}, schema: hyper_schema, strict: true)
22
- get "/apps"
23
- assert_equal 200, last_response.status
24
- end
25
-
26
18
  it "doesn't call error_handler (has a arg) when response is valid" do
27
19
  called = false
28
20
  pr = ->(_e) { called = true }
@@ -173,9 +165,6 @@ describe Committee::Middleware::ResponseValidation do
173
165
  private
174
166
 
175
167
  def new_rack_app(response, headers = {}, options = {})
176
- # TODO: delete when 5.0.0 released because default value changed
177
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
178
-
179
168
  headers = {
180
169
  "Content-Type" => "application/json"
181
170
  }.merge(headers)
@@ -113,9 +113,6 @@ describe Committee::Middleware::Stub do
113
113
  response = options.delete(:response)
114
114
  suppress = options.delete(:suppress)
115
115
 
116
- # TODO: delete when 5.0.0 released because default value changed
117
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
118
-
119
116
  Rack::Builder.new {
120
117
  use Committee::Middleware::Stub, options
121
118
  run lambda { |env|
@@ -69,8 +69,6 @@ describe Committee::SchemaValidator::HyperSchema::Router do
69
69
  end
70
70
 
71
71
  def hyper_schema_router(options = {})
72
- # TODO: delete when 5.0.0 released because default value changed
73
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
74
72
  schema = Committee::Drivers::HyperSchema::Driver.new.parse(hyper_schema_data)
75
73
  validator_option = Committee::SchemaValidator::Option.new(options, schema, :hyper_schema)
76
74
 
@@ -78,8 +76,6 @@ describe Committee::SchemaValidator::HyperSchema::Router do
78
76
  end
79
77
 
80
78
  def open_api_2_router(options = {})
81
- # TODO: delete when 5.0.0 released because default value changed
82
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
83
79
  schema = Committee::Drivers::OpenAPI2::Driver.new.parse(open_api_2_data)
84
80
  validator_option = Committee::SchemaValidator::Option.new(options, schema, :hyper_schema)
85
81
 
@@ -9,12 +9,7 @@ describe Committee::SchemaValidator::OpenAPI3::OperationWrapper do
9
9
  before do
10
10
  @path = '/validate'
11
11
  @method = 'post'
12
-
13
- # TODO: delete when 5.0.0 released because default value changed
14
- options = {}
15
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
16
-
17
- @validator_option = Committee::SchemaValidator::Option.new(options, open_api_3_schema, :open_api_3)
12
+ @validator_option = Committee::SchemaValidator::Option.new({}, open_api_3_schema, :open_api_3)
18
13
  end
19
14
 
20
15
  def operation_object
@@ -96,9 +96,6 @@ describe Committee::SchemaValidator::OpenAPI3::RequestValidator do
96
96
  end
97
97
 
98
98
  def new_rack_app(options = {})
99
- # TODO: delete when 5.0.0 released because default value changed
100
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
101
-
102
99
  Rack::Builder.new {
103
100
  use Committee::Middleware::RequestValidation, options
104
101
  run lambda { |_|
@@ -13,11 +13,7 @@ describe Committee::SchemaValidator::OpenAPI3::ResponseValidator do
13
13
  @path = '/validate'
14
14
  @method = 'post'
15
15
 
16
- # TODO: delete when 5.0.0 released because default value changed
17
- options = {}
18
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
19
-
20
- @validator_option = Committee::SchemaValidator::Option.new(options, open_api_3_schema, :open_api_3)
16
+ @validator_option = Committee::SchemaValidator::Option.new({}, open_api_3_schema, :open_api_3)
21
17
  end
22
18
 
23
19
  it "passes through a valid response" do
@@ -30,9 +30,6 @@ describe Committee::Test::Methods do
30
30
  @committee_schema = nil
31
31
 
32
32
  @committee_options = {schema: hyper_schema}
33
-
34
- # TODO: delete when 5.0.0 released because default value changed
35
- @committee_options[:parse_response_by_content_type] = false
36
33
  end
37
34
 
38
35
  describe "#assert_schema_conform" do
@@ -29,9 +29,6 @@ describe Committee::Test::Methods do
29
29
  @committee_router = nil
30
30
  @committee_schema = nil
31
31
  @committee_options = {}
32
-
33
- # TODO: delete when 5.0.0 released because default value changed
34
- @committee_options[:parse_response_by_content_type] = true
35
32
  end
36
33
 
37
34
  describe "Hyper-Schema" do
data/test/test_helper.rb CHANGED
@@ -21,7 +21,6 @@ require "minitest"
21
21
  require "minitest/spec"
22
22
  require "minitest/autorun"
23
23
  require "rack/test"
24
- require "rr"
25
24
  require "pry"
26
25
  require "stringio"
27
26
 
@@ -91,6 +90,14 @@ def open_api_3_data
91
90
  end
92
91
  end
93
92
 
93
+ def open_api_3_1_data
94
+ if YAML.respond_to?(:unsafe_load_file)
95
+ YAML.unsafe_load_file(open_api_3_1_schema_path)
96
+ else
97
+ YAML.load_file(open_api_3_1_schema_path)
98
+ end
99
+ end
100
+
94
101
  def hyper_schema_schema_path
95
102
  "./test/data/hyperschema/paas.json"
96
103
  end
@@ -115,6 +122,10 @@ def open_api_3_0_1_schema_path
115
122
  "./test/data/openapi3/3_0_1.yaml"
116
123
  end
117
124
 
125
+ def open_api_3_1_schema_path
126
+ "./test/data/openapi3/3_1.yaml"
127
+ end
128
+
118
129
  def open_api_3_invalid_reference_path
119
130
  "./test/data/openapi3/invalid_reference.yaml"
120
131
  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: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandur
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-01-16 00:00:00.000000000 Z
13
+ date: 2024-05-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json_schema
@@ -94,28 +94,14 @@ dependencies:
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '12.3'
97
+ version: '13.1'
98
98
  type: :development
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - "~>"
103
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'
104
+ version: '13.1'
119
105
  - !ruby/object:Gem::Dependency
120
106
  name: pry
121
107
  requirement: !ruby/object:Gem::Requirement
@@ -146,20 +132,6 @@ dependencies:
146
132
  version: '0'
147
133
  - !ruby/object:Gem::Dependency
148
134
  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
135
  requirement: !ruby/object:Gem::Requirement
164
136
  requirements:
165
137
  - - ">="
@@ -173,21 +145,7 @@ dependencies:
173
145
  - !ruby/object:Gem::Version
174
146
  version: '0'
175
147
  - !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
148
+ name: rubocop-performance
191
149
  requirement: !ruby/object:Gem::Requirement
192
150
  requirements:
193
151
  - - ">="
@@ -314,7 +272,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
314
272
  requirements:
315
273
  - - ">="
316
274
  - !ruby/object:Gem::Version
317
- version: 2.6.0
275
+ version: 2.7.0
318
276
  required_rubygems_version: !ruby/object:Gem::Requirement
319
277
  requirements:
320
278
  - - ">="