rswag-specs 2.14.0 → 2.15.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: 3d0a717ee80be6c37b90e1fc7ea402139c0e07d2972e6548c2aeffd1a1f86f07
4
+ data.tar.gz: ad12167354bfde937b5315657362adfb4d4930b76fb40ef3468c7fd08e2dbce7
5
5
  SHA512:
6
- metadata.gz: 02fcf0b9b5f42f837c434badc4275a72fd6789fbe973dbb703dcfaf0237699cb008b8c7ce51e4ba150429717e714a9b741d4788257a6ba09d8b06ef617521f0b
7
- data.tar.gz: 79c42771f6131b91ab849c770a6c2ef9461d54737059b4b24c03ca85a20e1c82fd26cf9ea4eb92d03f914ed3126b4e4c0571cea81e69ad89453d63d1441088a2
6
+ metadata.gz: f725ad91cb4982da4ee8ce87c86b1677e4aefbb01727963cb9b847c6788cf00a6d62beda51af391a35d242ab5d54ea2201531792c522a2dd71ff295934040901
7
+ data.tar.gz: c3039e9a8176812533fdfa8564d2796b0273a2ad5f6d3ae0007054c5a3fb5be8199609a38b3a5a7397eb8eb8d95f764f5f62de8badfe9fddfa2bcfec346acad9
@@ -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.15.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-10-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -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