rswag-specs 2.7.0 → 2.8.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfedb2177ee21788aa710db72fbc573230a51c84877bd90edff99b8a1fc9967c
|
4
|
+
data.tar.gz: 842d0dba7c2dcd4aa59ec015928c825da6ef1cf892859e492589d540b003c181
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5640b7930547aa45a3b2662f8fad08508063d1c9726c2f72d6e2f15f6eab32408472e7645230b30a5eec74ae223cfae5e87e9d26311cc609aa543c90d8234aef
|
7
|
+
data.tar.gz: 98e797ce8b1babf942ba387cffbe6eec52994047543c669b9293631bc08bfc1695b9d3c1ca572f3ec9357e7649bf601f0df81bf28590ee605b501f7546aae8f1
|
@@ -55,6 +55,18 @@ module Rswag
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
+
|
59
|
+
def request_body_example(value:, summary: nil, name: nil)
|
60
|
+
if metadata.key?(:operation)
|
61
|
+
metadata[:operation][:request_examples] ||= []
|
62
|
+
example = { value: value }
|
63
|
+
example[:summary] = summary if summary
|
64
|
+
# We need the examples to have a unique name for a set of examples, so just make the name the length if one isn't provided.
|
65
|
+
example[:name] = name || metadata[:operation][:request_examples].length()
|
66
|
+
metadata[:operation][:request_examples] << example
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
58
70
|
def response(code, description, metadata = {}, &block)
|
59
71
|
metadata[:response] = { code: code, description: description }
|
60
72
|
context(description, metadata, &block)
|
@@ -148,7 +148,7 @@ module Rswag
|
|
148
148
|
style = param[:style]&.to_sym || :form
|
149
149
|
explode = param[:explode].nil? ? true : param[:explode]
|
150
150
|
|
151
|
-
case param[:schema][:type]
|
151
|
+
case param[:schema][:type]&.to_sym
|
152
152
|
when :object
|
153
153
|
case style
|
154
154
|
when :deepObject
|
@@ -213,14 +213,22 @@ module Rswag
|
|
213
213
|
tuples << ['Content-Type', content_type]
|
214
214
|
end
|
215
215
|
|
216
|
+
# Host header
|
217
|
+
host = metadata[:operation][:host] || swagger_doc[:host]
|
218
|
+
if host.present?
|
219
|
+
host = example.respond_to?(:'Host') ? example.send(:'Host') : host
|
220
|
+
tuples << ['Host', host]
|
221
|
+
end
|
222
|
+
|
216
223
|
# Rails test infrastructure requires rack-formatted headers
|
217
224
|
rack_formatted_tuples = tuples.map do |pair|
|
218
225
|
[
|
219
226
|
case pair[0]
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
227
|
+
when 'Accept' then 'HTTP_ACCEPT'
|
228
|
+
when 'Content-Type' then 'CONTENT_TYPE'
|
229
|
+
when 'Authorization' then 'HTTP_AUTHORIZATION'
|
230
|
+
when 'Host' then 'HTTP_HOST'
|
231
|
+
else pair[0]
|
224
232
|
end,
|
225
233
|
pair[1]
|
226
234
|
]
|
@@ -32,9 +32,22 @@ module Rswag
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def validate_headers!(metadata, headers)
|
35
|
-
|
35
|
+
header_schemas = (metadata[:response][:headers] || {})
|
36
|
+
expected = header_schemas.keys
|
36
37
|
expected.each do |name|
|
37
|
-
|
38
|
+
nullable_attribute = header_schemas.dig(name.to_s, :schema, :nullable)
|
39
|
+
required_attribute = header_schemas.dig(name.to_s, :required)
|
40
|
+
|
41
|
+
is_nullable = nullable_attribute.nil? ? false : nullable_attribute
|
42
|
+
is_required = required_attribute.nil? ? true : required_attribute
|
43
|
+
|
44
|
+
if headers.exclude?(name.to_s) && is_required
|
45
|
+
raise UnexpectedResponse, "Expected response header #{name} to be present"
|
46
|
+
end
|
47
|
+
|
48
|
+
if headers.include?(name.to_s) && headers[name.to_s].nil? && !is_nullable
|
49
|
+
raise UnexpectedResponse, "Expected response header #{name} to not be null"
|
50
|
+
end
|
38
51
|
end
|
39
52
|
end
|
40
53
|
|
@@ -62,8 +62,18 @@ module Rswag
|
|
62
62
|
value[:requestBody] = { content: {} } unless value.dig(:requestBody, :content)
|
63
63
|
value[:requestBody][:required] = true if schema_param[:required]
|
64
64
|
value[:requestBody][:description] = schema_param[:description] if schema_param[:description]
|
65
|
+
examples = value.dig(:request_examples)
|
65
66
|
mime_list.each do |mime|
|
66
67
|
value[:requestBody][:content][mime] = { schema: schema_param[:schema] }
|
68
|
+
if examples
|
69
|
+
value[:requestBody][:content][mime][:examples] ||= {}
|
70
|
+
examples.map do |example|
|
71
|
+
value[:requestBody][:content][mime][:examples][example[:name]] = {
|
72
|
+
summary: example[:summary] || value[:summary],
|
73
|
+
value: example[:value]
|
74
|
+
}
|
75
|
+
end
|
76
|
+
end
|
67
77
|
end
|
68
78
|
end
|
69
79
|
|
@@ -200,6 +210,7 @@ module Rswag
|
|
200
210
|
is_hash = value.is_a?(Hash)
|
201
211
|
value.delete(:consumes) if is_hash && value[:consumes]
|
202
212
|
value.delete(:produces) if is_hash && value[:produces]
|
213
|
+
value.delete(:request_examples) if is_hash && value[:request_examples]
|
203
214
|
end
|
204
215
|
end
|
205
216
|
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.
|
4
|
+
version: 2.8.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-
|
13
|
+
date: 2022-11-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|