rswag-specs 2.3.2 → 2.5.0

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: 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