rswag-specs 2.6.0 → 2.7.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: 335cddedc6446301252f26bb28a0874072ebecfb5c8b35e5a2d94559a6606fcc
4
- data.tar.gz: 3a2e60364a2a6e6ee463163eee2caa628ecf28c3ba9975ea239aa1106d4cd179
3
+ metadata.gz: 989468cbcebd005e6bf95724400366cfa1b80e7d395bb6d1255bc12c283a98b2
4
+ data.tar.gz: 949a822da86b5d6f3ead28cdd1262a093bcd8399875b1962f101c41634cc4c51
5
5
  SHA512:
6
- metadata.gz: 436935923dcf3a446290c2bdf0160b399c5ba270096dc4019b1f47e2308f4e9ca66af8684fa09c6fc63f5b18069cf49b24ae124f19756480f5cff998873c26b5
7
- data.tar.gz: 0c123c3e98481381a606a68c59b9cc5f0b8626a70f81c76c3d825bc3a6a46874e9524155da085baaf66abb2872c23f76a0f0931b390d669feeaccf1ba4da875d
6
+ metadata.gz: b4cb982b39359a8f69dd5ebf18287a2b4941349a202751d10f936b81014fce8ec99a24886e5de63c4fb1d4aba653893cf4ebff9f425f547be99b1ac3910e53ad
7
+ data.tar.gz: 1064a439e5b8652c40a77eddd6d0837ea908780750187879bb8bdb11af67656ea6882a8a251bb8627001c7857ebad94c378d68432c1101e2e19647b5c7c29ae5
@@ -1,8 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_support'
4
+
3
5
  module Rswag
4
6
  module Specs
5
7
  module ExampleGroupHelpers
8
+ ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: Support for Ruby 2.6 will be dropped in v3.0') if RUBY_VERSION.start_with? '2.6'
9
+
6
10
  def path(template, metadata = {}, &block)
7
11
  metadata[:path_item] = { template: template }
8
12
  describe(template, metadata, &block)
@@ -100,8 +104,8 @@ module Rswag
100
104
  end
101
105
 
102
106
  def run_test!(&block)
103
- # NOTE: rspec 2.x support
104
107
  if RSPEC_VERSION < 3
108
+ ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: Support for RSpec 2.X will be dropped in v3.0')
105
109
  before do
106
110
  submit_request(example.metadata)
107
111
  end
@@ -101,8 +101,28 @@ module Rswag
101
101
  request[:verb] = metadata[:operation][:verb]
102
102
  end
103
103
 
104
+ def base_path_from_servers(swagger_doc, use_server = :default)
105
+ return '' if swagger_doc[:servers].nil? || swagger_doc[:servers].empty?
106
+ server = swagger_doc[:servers].first
107
+ variables = {}
108
+ server.fetch(:variables, {}).each_pair { |k,v| variables[k] = v[use_server] }
109
+ base_path = server[:url].gsub(/\{(.*?)\}/) { |name| variables[name.to_sym] }
110
+ URI(base_path).path
111
+ end
112
+
104
113
  def add_path(request, metadata, swagger_doc, parameters, example)
105
- template = (swagger_doc[:basePath] || '') + metadata[:path_item][:template]
114
+ open_api_3_doc = doc_version(swagger_doc).start_with?('3')
115
+ uses_base_path = swagger_doc[:basePath].present?
116
+
117
+ if open_api_3_doc && uses_base_path
118
+ ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: basePath is replaced in OpenAPI3! Update your swagger_helper.rb')
119
+ end
120
+
121
+ if uses_base_path
122
+ template = (swagger_doc[:basePath] || '') + metadata[:path_item][:template]
123
+ else # OpenAPI 3
124
+ template = base_path_from_servers(swagger_doc) + metadata[:path_item][:template]
125
+ end
106
126
 
107
127
  request[:path] = template.tap do |path_template|
108
128
  parameters.select { |p| p[:in] == :path }.each do |p|
@@ -150,7 +170,7 @@ module Rswag
150
170
  when :spaceDelimited then '%20'
151
171
  when :pipeDelimited then '|'
152
172
  end
153
- return "#{CGI.escape(name.to_s)}=" + value.to_a.flatten.map{|v| CGI.escape(v.to_s) }.join(separator)
173
+ return "#{CGI.escape(name.to_s)}=" + value.to_a.flatten.map{|v| CGI.escape(v.to_s) }.join(separator)
154
174
  end
155
175
  else
156
176
  return "#{name}=#{value}"
@@ -7,10 +7,12 @@ require 'swagger_helper'
7
7
  module Rswag
8
8
  module Specs
9
9
  class SwaggerFormatter < ::RSpec::Core::Formatters::BaseTextFormatter
10
+ ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: Support for Ruby 2.6 will be dropped in v3.0') if RUBY_VERSION.start_with? '2.6'
10
11
 
11
- # NOTE: rspec 2.x support
12
12
  if RSPEC_VERSION > 2
13
13
  ::RSpec::Core::Formatters.register self, :example_group_finished, :stop
14
+ else
15
+ ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: Support for RSpec 2.X will be dropped in v3.0')
14
16
  end
15
17
 
16
18
  def initialize(output, config = Rswag::Specs.config)
@@ -21,7 +23,6 @@ module Rswag
21
23
  end
22
24
 
23
25
  def example_group_finished(notification)
24
- # NOTE: rspec 2.x support
25
26
  metadata = if RSPEC_VERSION > 2
26
27
  notification.group.metadata
27
28
  else
@@ -54,9 +55,9 @@ module Rswag
54
55
  doc[:paths]&.each_pair do |_k, v|
55
56
  v.each_pair do |_verb, value|
56
57
  is_hash = value.is_a?(Hash)
57
- if is_hash && value.dig(:parameters)
58
- schema_param = value.dig(:parameters)&.find { |p| (p[:in] == :body || p[:in] == :formData) && p[:schema] }
59
- mime_list = value.dig(:consumes) || doc[:consumes]
58
+ if is_hash && value[:parameters]
59
+ schema_param = value[:parameters]&.find { |p| (p[:in] == :body || p[:in] == :formData) && p[:schema] }
60
+ mime_list = value[:consumes] || doc[:consumes]
60
61
  if value && schema_param && mime_list
61
62
  value[:requestBody] = { content: {} } unless value.dig(:requestBody, :content)
62
63
  value[:requestBody][:required] = true if schema_param[:required]
@@ -197,8 +198,8 @@ module Rswag
197
198
 
198
199
  def remove_invalid_operation_keys!(value)
199
200
  is_hash = value.is_a?(Hash)
200
- value.delete(:consumes) if is_hash && value.dig(:consumes)
201
- value.delete(:produces) if is_hash && value.dig(:produces)
201
+ value.delete(:consumes) if is_hash && value[:consumes]
202
+ value.delete(:produces) if is_hash && value[:produces]
202
203
  end
203
204
  end
204
205
  end
@@ -11,10 +11,15 @@ namespace :rswag do
11
11
  'spec/requests/**/*_spec.rb, spec/api/**/*_spec.rb, spec/integration/**/*_spec.rb'
12
12
  )
13
13
 
14
- # NOTE: rspec 2.x support
14
+ additional_rspec_opts = ENV.fetch(
15
+ 'ADDITIONAL_RSPEC_OPTS',
16
+ ''
17
+ )
18
+
15
19
  if Rswag::Specs::RSPEC_VERSION > 2 && Rswag::Specs.config.swagger_dry_run
16
- t.rspec_opts = ['--format Rswag::Specs::SwaggerFormatter', '--dry-run', '--order defined']
20
+ t.rspec_opts = ['--format Rswag::Specs::SwaggerFormatter', '--dry-run', '--order defined'] << additional_rspec_opts
17
21
  else
22
+ ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: Support for RSpec 2.X will be dropped in v3.0')
18
23
  t.rspec_opts = ['--format Rswag::Specs::SwaggerFormatter', '--order defined']
19
24
  end
20
25
  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.6.0
4
+ version: 2.7.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: 2022-09-09 00:00:00.000000000 Z
13
+ date: 2022-10-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -56,16 +56,50 @@ dependencies:
56
56
  name: json-schema
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '2.2'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '4.0'
62
65
  type: :runtime
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
- - - "~>"
69
+ - - ">="
67
70
  - !ruby/object:Gem::Version
68
71
  version: '2.2'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '4.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rspec-core
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '2.14'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '2.14'
89
+ - !ruby/object:Gem::Dependency
90
+ name: simplecov
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - '='
94
+ - !ruby/object:Gem::Version
95
+ version: 0.21.2
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '='
101
+ - !ruby/object:Gem::Version
102
+ version: 0.21.2
69
103
  description: 'Simplify API integration testing with a succinct rspec DSL and generate
70
104
  OpenAPI specification files directly from your rspec tests. More about the OpenAPI
71
105
  initiative here: http://spec.openapis.org/'