openapi_contracts 0.15.1 → 0.16.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 +4 -4
- data/lib/openapi_contracts/rspec.rb +2 -0
- data/lib/openapi_contracts/validators/headers.rb +25 -2
- metadata +6 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93de30085796380ba48bc3ac5e1919a80ba7d073d29a43484391d1769772a442
|
4
|
+
data.tar.gz: c6849b72002e53d9d33c5ca9036bd528a45d52e6bef4802cbe5f08ba28887c25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c1ce0325629f3e05e4226eac870b00c25a6f10de41525a9a43290d84d12876c6dd77a5954e84150bf3321923bf3a87f3f264a7a9586c33cc4b7edd8feb4e9b2
|
7
|
+
data.tar.gz: 4f4d8380e11632c13c28c3fa626eda40b73e6c5da7a3cf14256159753bb012a4a48ede962a73e322494fc9227bb3d2d54884d38fab290e536c1abbf3b6eae119
|
@@ -9,12 +9,35 @@ module OpenapiContracts::Validators
|
|
9
9
|
def validate
|
10
10
|
spec.headers.each do |header|
|
11
11
|
value = response.headers[header.name]
|
12
|
+
|
13
|
+
# Rack 3.0.0 returns an Array for multi-value headers. OpenAPI doesn't
|
14
|
+
# support multi-value headers, so we join them into a single string.
|
15
|
+
#
|
16
|
+
# @see https://github.com/rack/rack/issues/1598
|
17
|
+
value = value.join("\n") if value.is_a?(Array)
|
18
|
+
|
12
19
|
if value.blank?
|
13
20
|
@errors << "Missing header #{header.name}" if header.required?
|
14
|
-
|
15
|
-
|
21
|
+
else
|
22
|
+
schemer = JSONSchemer.schema(header.schema)
|
23
|
+
unless schemer.valid?(value)
|
24
|
+
validation_errors = schemer.validate(value).to_a
|
25
|
+
@errors << validation_error_message(header, value, validation_errors)
|
26
|
+
end
|
16
27
|
end
|
17
28
|
end
|
18
29
|
end
|
30
|
+
|
31
|
+
def validation_error_message(header, value, error_array)
|
32
|
+
if error_array.empty?
|
33
|
+
"Header #{header.name} does not match schema"
|
34
|
+
else
|
35
|
+
error_array.map { |error|
|
36
|
+
error_message = "Header #{header.name} validation error: #{error['error']}"
|
37
|
+
truncated_value = value.to_s.truncate(100)
|
38
|
+
error_message + " (value: #{truncated_value})"
|
39
|
+
}.join("\n")
|
40
|
+
end
|
41
|
+
end
|
19
42
|
end
|
20
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openapi_contracts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mkon
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-04-03 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: activesupport
|
@@ -36,7 +35,7 @@ dependencies:
|
|
36
35
|
requirements:
|
37
36
|
- - ">="
|
38
37
|
- !ruby/object:Gem::Version
|
39
|
-
version: '2'
|
38
|
+
version: '2.1'
|
40
39
|
- - "<"
|
41
40
|
- !ruby/object:Gem::Version
|
42
41
|
version: '2.4'
|
@@ -46,7 +45,7 @@ dependencies:
|
|
46
45
|
requirements:
|
47
46
|
- - ">="
|
48
47
|
- !ruby/object:Gem::Version
|
49
|
-
version: '2'
|
48
|
+
version: '2.1'
|
50
49
|
- - "<"
|
51
50
|
- !ruby/object:Gem::Version
|
52
51
|
version: '2.4'
|
@@ -154,7 +153,6 @@ dependencies:
|
|
154
153
|
- - "~>"
|
155
154
|
- !ruby/object:Gem::Version
|
156
155
|
version: 0.22.0
|
157
|
-
description:
|
158
156
|
email:
|
159
157
|
- konstantin@munteanu.de
|
160
158
|
executables: []
|
@@ -199,7 +197,6 @@ licenses:
|
|
199
197
|
- MIT
|
200
198
|
metadata:
|
201
199
|
rubygems_mfa_required: 'true'
|
202
|
-
post_install_message:
|
203
200
|
rdoc_options: []
|
204
201
|
require_paths:
|
205
202
|
- lib
|
@@ -210,15 +207,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
210
207
|
version: '3.2'
|
211
208
|
- - "<"
|
212
209
|
- !ruby/object:Gem::Version
|
213
|
-
version: '3.
|
210
|
+
version: '3.5'
|
214
211
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
212
|
requirements:
|
216
213
|
- - ">="
|
217
214
|
- !ruby/object:Gem::Version
|
218
215
|
version: '0'
|
219
216
|
requirements: []
|
220
|
-
rubygems_version: 3.
|
221
|
-
signing_key:
|
217
|
+
rubygems_version: 3.6.2
|
222
218
|
specification_version: 4
|
223
219
|
summary: Openapi schemas as API contracts
|
224
220
|
test_files: []
|