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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 610ce0d1a430f9da85629c7951236acdc351a76a69c37c6b2eb13c440a4857b9
|
4
|
+
data.tar.gz: a37e8ee35c7c18da0c70fe9322a7aee727e438ea29956dc046aa7a9e31ad9b45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
32
|
-
|
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
|
-
|
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
|
-
|
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:
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|