rswag-specs 2.14.0 → 2.16.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: 632bdf59bdc4251188267dec82987bd14466f625e34e54501383a298081c9cdc
4
- data.tar.gz: 19f715a56062c2aaa9bd6db80392e154a6f7ebcac70077d2e59c38fe614baf77
3
+ metadata.gz: 8022f62493aff9272dc9e28dd243b7b4323dd34ebd7e6e2cd0c686ad5c04c252
4
+ data.tar.gz: 4926c9541ef625bd6acc1e1360b9c151a89b55dec7d3b8bb2cffb5f787d7546f
5
5
  SHA512:
6
- metadata.gz: 02fcf0b9b5f42f837c434badc4275a72fd6789fbe973dbb703dcfaf0237699cb008b8c7ce51e4ba150429717e714a9b741d4788257a6ba09d8b06ef617521f0b
7
- data.tar.gz: 79c42771f6131b91ab849c770a6c2ef9461d54737059b4b24c03ca85a20e1c82fd26cf9ea4eb92d03f914ed3126b4e4c0571cea81e69ad89453d63d1441088a2
6
+ metadata.gz: 6bd7e73cbface6b2aba3192e0ea7c4894834cfb18b1ad4a78a5661979d8674281d75d0f994de90319acdbe41136a5860675d9745c5de9ec9be0738775fa4c502
7
+ data.tar.gz: d641e842144cf173c6af4ab1ed17eeb72c95ad926f9c731afa426679ca8138b0467a151a8ecfcaa61bb18f2fb7f364043db99e58e2b96383c71cfd525daf76b8
@@ -61,6 +61,14 @@ module Rswag
61
61
  def openapi_strict_schema_validation
62
62
  @rspec_config.openapi_strict_schema_validation || false
63
63
  end
64
+
65
+ def openapi_all_properties_required
66
+ @rspec_config.openapi_all_properties_required || false
67
+ end
68
+
69
+ def openapi_no_additional_properties
70
+ @rspec_config.openapi_no_additional_properties || false
71
+ end
64
72
  end
65
73
 
66
74
  class ConfigurationError < StandardError; end
@@ -174,7 +174,7 @@ module Rswag
174
174
  return "#{escaped_name}=" + value.to_a.flatten.map{|v| CGI.escape(v.to_s) }.join(separator)
175
175
  end
176
176
  else
177
- return "#{name}=#{value}"
177
+ return "#{escaped_name}=#{CGI.escape(value.to_s)}"
178
178
  end
179
179
  end
180
180
 
@@ -244,7 +244,7 @@ module Rswag
244
244
 
245
245
  request[:payload] = if ['application/x-www-form-urlencoded', 'multipart/form-data'].include?(content_type)
246
246
  build_form_payload(parameters, example)
247
- elsif content_type == 'application/json'
247
+ elsif content_type =~ /\Aapplication\/([0-9A-Za-z._-]+\+json\z|json\z)/
248
248
  build_json_payload(parameters, example)
249
249
  else
250
250
  build_raw_payload(parameters, example)
@@ -73,14 +73,24 @@ module Rswag
73
73
  end
74
74
 
75
75
  def validation_options_from(metadata)
76
+ is_strict = @config.openapi_strict_schema_validation
77
+
76
78
  if metadata.key?(:swagger_strict_schema_validation)
77
- Rswag::Specs.deprecator.warn('Rswag::Specs: WARNING: This option will be renamed to "openapi_strict_schema_validation" in v3.0')
79
+ Rswag::Specs.deprecator.warn('Rswag::Specs: WARNING: This option will be removed in v3.0 please use openapi_all_properties_required and openapi_no_additional_properties set to true')
78
80
  is_strict = !!metadata[:swagger_strict_schema_validation]
79
- else
80
- is_strict = !!metadata.fetch(:openapi_strict_schema_validation, @config.openapi_strict_schema_validation)
81
+ elsif metadata.key?(:openapi_strict_schema_validation)
82
+ Rswag::Specs.deprecator.warn('Rswag::Specs: WARNING: This option will be removed in v3.0 please use openapi_all_properties_required and openapi_no_additional_properties set to true')
83
+ is_strict = !!metadata[:openapi_strict_schema_validation]
81
84
  end
82
85
 
83
- { strict: is_strict }
86
+ all_properties_required = metadata.fetch(:openapi_all_properties_required, @config.openapi_all_properties_required)
87
+ no_additional_properties = metadata.fetch(:openapi_no_additional_properties, @config.openapi_no_additional_properties)
88
+
89
+ {
90
+ strict: is_strict,
91
+ allPropertiesRequired: all_properties_required,
92
+ noAdditionalProperties: no_additional_properties
93
+ }
84
94
  end
85
95
 
86
96
  def definitions_or_component_schemas(swagger_doc, version)
data/lib/rswag/specs.rb CHANGED
@@ -12,8 +12,7 @@ module Rswag
12
12
  swagger_root: :openapi_root,
13
13
  swagger_docs: :openapi_specs,
14
14
  swagger_dry_run: :rswag_dry_run,
15
- swagger_format: :openapi_format,
16
- swagger_strict_schema_validation: :openapi_strict_schema_validation
15
+ swagger_format: :openapi_format
17
16
  }.freeze
18
17
  private_constant :RENAMED_METHODS
19
18
 
@@ -24,6 +23,8 @@ module Rswag
24
23
  c.add_setting :rswag_dry_run
25
24
  c.add_setting :openapi_format, default: :json
26
25
  c.add_setting :openapi_strict_schema_validation
26
+ c.add_setting :openapi_all_properties_required
27
+ c.add_setting :openapi_no_additional_properties
27
28
  c.extend ExampleGroupHelpers, type: :request
28
29
  c.include ExampleHelpers, type: :request
29
30
  end
@@ -46,6 +47,10 @@ module Rswag
46
47
  public_send("#{new_name}=", *args, &block)
47
48
  end
48
49
  end
50
+
51
+ define_method('swagger_strict_schema_validation=') do |*args, &block|
52
+ public_send('openapi_strict_schema_validation=', *args, &block)
53
+ end
49
54
  end
50
55
 
51
56
  Specs.deprecator.deprecate_methods(
@@ -53,6 +58,11 @@ module Rswag
53
58
  RENAMED_METHODS.to_h { |old_name, new_name| ["#{old_name}=".to_sym, "#{new_name}=".to_sym] }
54
59
  )
55
60
 
61
+ Specs.deprecator.deprecate_methods(
62
+ RSpec::Core::Configuration,
63
+ :openapi_strict_schema_validation= => 'use openapi_all_properties_required and openapi_no_additional_properties set to true'
64
+ )
65
+
56
66
  if RUBY_VERSION.start_with? '2.6'
57
67
  Specs.deprecator.warn('Rswag::Specs: WARNING: Support for Ruby 2.6 will be dropped in v3.0')
58
68
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rswag-specs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.14.0
4
+ version: 2.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richie Morris
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-08-13 00:00:00.000000000 Z
13
+ date: 2024-11-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '5.2'
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
- version: '8.0'
24
+ version: '8.1'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,7 +31,7 @@ dependencies:
31
31
  version: '5.2'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '8.0'
34
+ version: '8.1'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: json-schema
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -41,7 +41,7 @@ dependencies:
41
41
  version: '2.2'
42
42
  - - "<"
43
43
  - !ruby/object:Gem::Version
44
- version: '5.0'
44
+ version: '6.0'
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -51,7 +51,7 @@ dependencies:
51
51
  version: '2.2'
52
52
  - - "<"
53
53
  - !ruby/object:Gem::Version
54
- version: '5.0'
54
+ version: '6.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: railties
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -61,7 +61,7 @@ dependencies:
61
61
  version: '5.2'
62
62
  - - "<"
63
63
  - !ruby/object:Gem::Version
64
- version: '8.0'
64
+ version: '8.1'
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,7 +71,7 @@ dependencies:
71
71
  version: '5.2'
72
72
  - - "<"
73
73
  - !ruby/object:Gem::Version
74
- version: '8.0'
74
+ version: '8.1'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rspec-core
77
77
  requirement: !ruby/object:Gem::Requirement