committee 4.4.0 → 4.99.0.beta1
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e23e8ffb5db07547735711e16eccf1407a2788ef957e5e804b253cbee8c02eb0
|
4
|
+
data.tar.gz: 1be7ca76dc347c9f0d9b25523ac69a61dc660bcca7fc183f3542512c88fc7d29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2f1c3954b0ef564de03ba7f0c6364b8727f611acbe4e8c2ed5fdd99e1934dede243f81948d4d8a130f912cd89503ae0e9b3b04cf1617ca137847e3fdbaff4da
|
7
|
+
data.tar.gz: e8cfc2d5705bb4e3ff2284ab1e80f9c2a0022cf7c2099a66f71aabaed2c9d9c6ff4b35786779ca9b6630a0bfcffd6b40e6813a8c98fdf52c870e849292141f5d
|
@@ -80,10 +80,18 @@ module Committee
|
|
80
80
|
|
81
81
|
query_param = unpacker.unpack_query_params(request)
|
82
82
|
|
83
|
+
order = if validator_option.parameter_overwite_by_rails_rule
|
84
|
+
# (high priority) path_hash_key -> query_param -> request_body_hash
|
85
|
+
[request.env[validator_option.request_body_hash_key], query_param, request.env[validator_option.path_hash_key]]
|
86
|
+
else
|
87
|
+
# (high priority) path_hash_key -> request_body_hash -> query_param
|
88
|
+
[query_param, request.env[validator_option.request_body_hash_key], request.env[validator_option.path_hash_key]]
|
89
|
+
end
|
90
|
+
|
83
91
|
request.env[validator_option.params_key] = Committee::Utils.indifferent_hash
|
84
|
-
|
85
|
-
|
86
|
-
|
92
|
+
order.each do |param|
|
93
|
+
request.env[validator_option.params_key].merge!(Committee::Utils.deep_copy(param))
|
94
|
+
end
|
87
95
|
end
|
88
96
|
|
89
97
|
def copy_coerced_data_to_query_hash(request)
|
@@ -16,7 +16,8 @@ module Committee
|
|
16
16
|
:coerce_recursive,
|
17
17
|
:optimistic_json,
|
18
18
|
:validate_success_only,
|
19
|
-
:parse_response_by_content_type
|
19
|
+
:parse_response_by_content_type,
|
20
|
+
:parameter_overwite_by_rails_rule
|
20
21
|
|
21
22
|
# Non-boolean options:
|
22
23
|
attr_reader :headers_key,
|
@@ -31,7 +32,7 @@ module Committee
|
|
31
32
|
@headers_key = options[:headers_key] || "committee.headers"
|
32
33
|
@params_key = options[:params_key] || "committee.params"
|
33
34
|
@query_hash_key = if options[:query_hash_key].nil?
|
34
|
-
Committee.warn_deprecated('Committee: please set query_hash_key = rack.request.query_hash because we\'ll change default value in next major version.')
|
35
|
+
Committee.warn_deprecated('Committee: please set query_hash_key = rack.request.query_hash because we\'ll change default value to "committee.query_hash" in next major version.')
|
35
36
|
'rack.request.query_hash'
|
36
37
|
else
|
37
38
|
options.fetch(:query_hash_key)
|
@@ -54,6 +55,12 @@ module Committee
|
|
54
55
|
else
|
55
56
|
options.fetch(:parse_response_by_content_type)
|
56
57
|
end
|
58
|
+
@parameter_overwite_by_rails_rule = if options[:parameter_overwite_by_rails_rule].nil?
|
59
|
+
Committee.warn_deprecated('Committee: please set parameter_overwite_by_rails_rule = false because we\'ll change default value to "true" in next major version.')
|
60
|
+
false
|
61
|
+
else
|
62
|
+
options.fetch(:parameter_overwite_by_rails_rule)
|
63
|
+
end
|
57
64
|
|
58
65
|
# Boolean options and have a different value by default
|
59
66
|
@allow_get_body = options.fetch(:allow_get_body, schema.driver.default_allow_get_body)
|
@@ -412,34 +412,114 @@ describe Committee::Middleware::RequestValidation do
|
|
412
412
|
get "/coerce_path_params/1"
|
413
413
|
end
|
414
414
|
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
415
|
+
describe "overwrite same parameter (old rule)" do
|
416
|
+
# (high priority) path_hash_key -> request_body_hash -> query_param
|
417
|
+
it "set query parameter to committee.params and query hash" do
|
418
|
+
@app = new_rack_app_with_lambda(lambda do |env|
|
419
|
+
assert_equal env['committee.params']['integer'], 42
|
420
|
+
assert_equal env['committee.params'][:integer], 42
|
421
|
+
assert_equal env['rack.request.query_hash']['integer'], 42
|
422
|
+
#assert_equal env['rack.request.query_hash'][:integer], 42 # this isn't hash indifferent hash because we use rack.request.query_hash
|
423
|
+
[204, {}, []]
|
424
|
+
end, schema: open_api_3_schema)
|
425
|
+
|
426
|
+
header "Content-Type", "application/json"
|
427
|
+
post '/overwrite_same_parameter?integer=42'
|
428
|
+
assert_equal 204, last_response.status
|
429
|
+
end
|
423
430
|
|
424
|
-
|
425
|
-
|
426
|
-
|
431
|
+
it "request body precedence over query parameter" do
|
432
|
+
@app = new_rack_app_with_lambda(lambda do |env|
|
433
|
+
assert_equal env['committee.params']['integer'], 21
|
434
|
+
assert_equal env['committee.params'][:integer], 21
|
435
|
+
assert_equal env['committee.request_body_hash']['integer'], 21
|
436
|
+
assert_equal env['committee.request_body_hash'][:integer], 21
|
437
|
+
assert_equal env['rack.request.query_hash']['integer'], 21 # we can't use query_parameter :(
|
438
|
+
#assert_equal env['rack.request.query_hash'][:integer], 21 # this isn't hash indifferent hash because we use rack.request.query_hash
|
439
|
+
[204, {}, []]
|
440
|
+
end, schema: open_api_3_schema)
|
441
|
+
|
442
|
+
params = {integer: 21}
|
443
|
+
|
444
|
+
header "Content-Type", "application/json"
|
445
|
+
post '/overwrite_same_parameter?integer=42', JSON.generate(params)
|
446
|
+
assert_equal 204, last_response.status
|
447
|
+
end
|
448
|
+
|
449
|
+
it "path parameter precedence over request body" do
|
450
|
+
@app = new_rack_app_with_lambda(lambda do |env|
|
451
|
+
assert_equal env['committee.params']['integer'], 84
|
452
|
+
assert_equal env['committee.params'][:integer], 84
|
453
|
+
assert_equal env['committee.path_hash']['integer'], 84
|
454
|
+
assert_equal env['committee.path_hash'][:integer], 84
|
455
|
+
assert_equal env['committee.request_body_hash']['integer'], 21
|
456
|
+
assert_equal env['committee.request_body_hash'][:integer], 21
|
457
|
+
assert_equal env['rack.request.query_hash']['integer'], 84 # we can't use query_parameter :(
|
458
|
+
#assert_equal env['rack.request.query_hash'][:integer], 21 # this isn't hash indifferent hash because we use rack.request.query_hash
|
459
|
+
[204, {}, []]
|
460
|
+
end, schema: open_api_3_schema)
|
461
|
+
|
462
|
+
params = {integer: 21}
|
463
|
+
|
464
|
+
header "Content-Type", "application/json"
|
465
|
+
post '/overwrite_same_parameter/84?integer=42', JSON.generate(params)
|
466
|
+
assert_equal 204, last_response.status
|
467
|
+
end
|
427
468
|
end
|
428
469
|
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
470
|
+
describe "overwrite same parameter (new rule and seme to Rails)" do
|
471
|
+
# (high priority) path_hash_key -> query_param -> request_body_hash
|
472
|
+
it "set request body to committee.params and query hash" do
|
473
|
+
@app = new_rack_app_with_lambda(lambda do |env|
|
474
|
+
assert_equal env['committee.params']['integer'], 21
|
475
|
+
assert_equal env['committee.params'][:integer], 21
|
476
|
+
assert_equal env['committee.request_body_hash']['integer'], 21
|
477
|
+
assert_equal env['committee.request_body_hash'][:integer], 21
|
478
|
+
[204, {}, []]
|
479
|
+
end, schema: open_api_3_schema, parameter_overwite_by_rails_rule: true)
|
480
|
+
|
481
|
+
params = {integer: 21}
|
482
|
+
|
483
|
+
header "Content-Type", "application/json"
|
484
|
+
post '/overwrite_same_parameter', JSON.generate(params)
|
485
|
+
assert_equal 204, last_response.status
|
486
|
+
end
|
439
487
|
|
440
|
-
|
441
|
-
|
442
|
-
|
488
|
+
it "query parameter precedence over request body" do
|
489
|
+
@app = new_rack_app_with_lambda(lambda do |env|
|
490
|
+
assert_equal env['committee.params']['integer'], 42
|
491
|
+
assert_equal env['committee.params'][:integer], 42
|
492
|
+
assert_equal env['committee.request_body_hash']['integer'], 21
|
493
|
+
assert_equal env['committee.request_body_hash'][:integer], 21
|
494
|
+
assert_equal env['rack.request.query_hash']['integer'], 42 # we can't use query_parameter :(
|
495
|
+
[204, {}, []]
|
496
|
+
end, schema: open_api_3_schema, parameter_overwite_by_rails_rule: true)
|
497
|
+
|
498
|
+
params = {integer: 21}
|
499
|
+
|
500
|
+
header "Content-Type", "application/json"
|
501
|
+
post '/overwrite_same_parameter?integer=42', JSON.generate(params)
|
502
|
+
assert_equal 204, last_response.status
|
503
|
+
end
|
504
|
+
|
505
|
+
it "path path parameter precedence over query parameter" do
|
506
|
+
@app = new_rack_app_with_lambda(lambda do |env|
|
507
|
+
assert_equal env['committee.params']['integer'], 84
|
508
|
+
assert_equal env['committee.params'][:integer], 84
|
509
|
+
assert_equal env['committee.request_body_hash']['integer'], 21
|
510
|
+
assert_equal env['committee.request_body_hash'][:integer], 21
|
511
|
+
assert_equal env['rack.request.query_hash']['integer'], 84 # we can't use query_parameter :(
|
512
|
+
assert_equal env['committee.path_hash']['integer'], 84
|
513
|
+
assert_equal env['committee.path_hash'][:integer], 84
|
514
|
+
[204, {}, []]
|
515
|
+
end, schema: open_api_3_schema, parameter_overwite_by_rails_rule: true)
|
516
|
+
|
517
|
+
params = {integer: 21}
|
518
|
+
|
519
|
+
header "Content-Type", "application/json"
|
520
|
+
post '/overwrite_same_parameter/84?integer=42', JSON.generate(params)
|
521
|
+
assert_equal 204, last_response.status
|
522
|
+
end
|
443
523
|
end
|
444
524
|
|
445
525
|
it "unpacker test" do
|
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: 4.
|
4
|
+
version: 4.99.0.beta1
|
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:
|
13
|
+
date: 2023-01-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json_schema
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
89
|
+
version: '0.8'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
96
|
+
version: '0.8'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -322,11 +322,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
322
322
|
version: 2.4.0
|
323
323
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
324
324
|
requirements:
|
325
|
-
- - "
|
325
|
+
- - ">"
|
326
326
|
- !ruby/object:Gem::Version
|
327
|
-
version:
|
327
|
+
version: 1.3.1
|
328
328
|
requirements: []
|
329
|
-
rubygems_version: 3.
|
329
|
+
rubygems_version: 3.3.3
|
330
330
|
signing_key:
|
331
331
|
specification_version: 4
|
332
332
|
summary: A collection of Rack middleware to support JSON Schema.
|