rswag-specs 2.3.2 → 2.5.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: 540d37d1a9a9e90a4b062f65239029fdd9fcdcfec4622eb68ec4f90ec4eebab9
4
- data.tar.gz: 9180d18a4a0d8ba624c42a38376270bdb0885da77f007cf001be3128d5929d66
3
+ metadata.gz: 610ce0d1a430f9da85629c7951236acdc351a76a69c37c6b2eb13c440a4857b9
4
+ data.tar.gz: a37e8ee35c7c18da0c70fe9322a7aee727e438ea29956dc046aa7a9e31ad9b45
5
5
  SHA512:
6
- metadata.gz: 4da3cd01812d9d8b8d8e28a4f35400cabcae133efd3192864eaa4820a9210c82dd78b35e353abaf74856d6f822fbf3f3eac94fa2c3dbe461f7b3167a129f7e6d
7
- data.tar.gz: f4e261ec8b205d949058e8a124964250cfcef4a26ff93c59fa8fb269acc0e0b9c565e2b0bac2ae8071a92146d69a685b902bf11e6939282a27abe1c13cdbd1a9
6
+ metadata.gz: f60493c73cba0f408b7a903da428f7b64fc43059cae706a4edbd4aa8bc2e00dcdbae14d946ddc2997b0f31aa3d03fcfc8dfbe5aa7d65e5ec2255353656fb28cb
7
+ data.tar.gz: aaf0c61ab025fb8c254adb64bd6aaecd172f25256684d7e01751a67b027a45c98efb11a6e9703cf60c64a0e629881687c8addc24354803142190ebb0a3c28b05
@@ -28,9 +28,11 @@ module Rswag
28
28
  end
29
29
 
30
30
  def swagger_dry_run
31
- @swagger_dry_run ||= begin
32
- @rspec_config.swagger_dry_run.nil? || @rspec_config.swagger_dry_run
31
+ return @swagger_dry_run if defined? @swagger_dry_run
32
+ if ENV.key?('SWAGGER_DRY_RUN')
33
+ @rspec_config.swagger_dry_run = ENV['SWAGGER_DRY_RUN'] == '1'
33
34
  end
35
+ @swagger_dry_run = @rspec_config.swagger_dry_run.nil? || @rspec_config.swagger_dry_run
34
36
  end
35
37
 
36
38
  def swagger_format
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
-
2
+ require "active_support"
3
3
  require 'active_support/core_ext/hash/slice'
4
4
  require 'active_support/core_ext/hash/conversions'
5
5
  require 'json'
@@ -194,12 +194,36 @@ module Rswag
194
194
 
195
195
  def build_json_payload(parameters, example)
196
196
  body_param = parameters.select { |p| p[:in] == :body }.first
197
- body_param ? example.send(body_param[:name]).to_json : nil
197
+
198
+ return nil unless body_param
199
+
200
+ raise(MissingParameterError, body_param[:name]) unless example.respond_to?(body_param[:name])
201
+
202
+ example.send(body_param[:name]).to_json
198
203
  end
199
204
 
200
205
  def doc_version(doc)
201
206
  doc[:openapi] || doc[:swagger] || '3'
202
207
  end
203
208
  end
209
+
210
+ class MissingParameterError < StandardError
211
+ attr_reader :body_param
212
+
213
+ def initialize(body_param)
214
+ @body_param = body_param
215
+ end
216
+
217
+ def message
218
+ <<~MSG
219
+ Missing parameter '#{body_param}'
220
+
221
+ Please check your spec. It looks like you defined a body parameter,
222
+ but did not declare usage via let. Try adding:
223
+
224
+ let(:#{body_param}) {}
225
+ MSG
226
+ end
227
+ end
204
228
  end
205
229
  end
@@ -50,7 +50,11 @@ module Rswag
50
50
  .merge(schemas)
51
51
 
52
52
  errors = JSON::Validator.fully_validate(validation_schema, body)
53
- raise UnexpectedResponse, "Expected response body to match schema: #{errors[0]}" if errors.any?
53
+ return unless errors.any?
54
+
55
+ raise UnexpectedResponse,
56
+ "Expected response body to match schema: #{errors[0]}\n" \
57
+ "Response body: #{JSON.pretty_generate(JSON.parse(body))}"
54
58
  end
55
59
 
56
60
  def definitions_or_component_schemas(swagger_doc, version)
@@ -62,7 +66,7 @@ module Rswag
62
66
  swagger_doc.slice(:definitions)
63
67
  else
64
68
  components = swagger_doc[:components] || {}
65
- { components: { schemas: components[:schemas] } }
69
+ { components: components }
66
70
  end
67
71
  end
68
72
  end
@@ -132,9 +132,8 @@ module Rswag
132
132
  def upgrade_content!(mime_list, target_node)
133
133
  schema = target_node[:schema]
134
134
  return if mime_list.empty? || schema.nil?
135
- target_node[:content] ||= {}
136
- target_node.merge!(content: {})
137
135
 
136
+ target_node[:content] ||= {}
138
137
  mime_list.each do |mime_type|
139
138
  # TODO upgrade to have content-type specific schema
140
139
  (target_node[:content][mime_type] ||= {}).merge!(schema: schema)
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.3.2
4
+ version: 2.5.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: 2021-01-28 00:00:00.000000000 Z
13
+ date: 2022-02-08 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: '3.1'
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
- version: '7.0'
24
+ version: '7.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: '3.1'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '7.0'
34
+ version: '7.1'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: railties
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -41,7 +41,7 @@ dependencies:
41
41
  version: '3.1'
42
42
  - - "<"
43
43
  - !ruby/object:Gem::Version
44
- version: '7.0'
44
+ version: '7.1'
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -51,7 +51,7 @@ dependencies:
51
51
  version: '3.1'
52
52
  - - "<"
53
53
  - !ruby/object:Gem::Version
54
- version: '7.0'
54
+ version: '7.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: json-schema
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  requirements: []
116
- rubygems_version: 3.0.6
116
+ rubygems_version: 3.3.3
117
117
  signing_key:
118
118
  specification_version: 4
119
119
  summary: An OpenAPI-based (formerly called Swagger) DSL for rspec-rails & accompanying