committee 4.4.0 → 4.99.0.beta1
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.
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.
|