openapi_contracts 0.14.0 → 0.16.2
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: 04f75eda460ed18d448950e07a369562fb8b6f8b93127f311d8a42756f7d3a3f
|
|
4
|
+
data.tar.gz: 92527099886fe57922ffbd87c9fff3fffdae96f1a56beb59a59a1a6e7362b1f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 46eff36fa87371d04173b695fcf82f0f613685c0a1a87cd74988f72dde2d439c1b86c664fdc183f172f0b25c2bf7c0d196d7d9e3876f10bbb60c52ec6524fca1
|
|
7
|
+
data.tar.gz: a4e7e55983e3acdffbc2e18af27910792156396d5af7274cff178dba6386bd51e0250c27f510a33cf21063eae3cba17e1d2103f243c07296d538eb279be877c7
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'rspec/matchers'
|
|
2
|
+
|
|
1
3
|
RSpec::Matchers.define :match_openapi_doc do |doc, options = {}| # rubocop:disable Metrics/BlockLength
|
|
2
4
|
include OpenapiContracts::Helper
|
|
3
5
|
|
|
@@ -27,7 +29,9 @@ RSpec::Matchers.define :match_openapi_doc do |doc, options = {}| # rubocop:disab
|
|
|
27
29
|
|
|
28
30
|
def with_http_status(status)
|
|
29
31
|
if status.is_a? Symbol
|
|
30
|
-
@status = Rack::Utils::SYMBOL_TO_STATUS_CODE
|
|
32
|
+
@status = Rack::Utils::SYMBOL_TO_STATUS_CODE.fetch(status) do
|
|
33
|
+
raise ArgumentError, "Unknown status #{status.inspect}"
|
|
34
|
+
end
|
|
31
35
|
else
|
|
32
36
|
@status = status
|
|
33
37
|
end
|
|
@@ -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.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- mkon
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activesupport
|
|
@@ -19,7 +18,7 @@ dependencies:
|
|
|
19
18
|
version: '6.1'
|
|
20
19
|
- - "<"
|
|
21
20
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '8'
|
|
21
|
+
version: '8.1'
|
|
23
22
|
type: :runtime
|
|
24
23
|
prerelease: false
|
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,27 +28,27 @@ dependencies:
|
|
|
29
28
|
version: '6.1'
|
|
30
29
|
- - "<"
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '8'
|
|
31
|
+
version: '8.1'
|
|
33
32
|
- !ruby/object:Gem::Dependency
|
|
34
33
|
name: json_schemer
|
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
|
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
|
-
version: '2.
|
|
41
|
+
version: '2.5'
|
|
43
42
|
type: :runtime
|
|
44
43
|
prerelease: false
|
|
45
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
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
|
-
version: '2.
|
|
51
|
+
version: '2.5'
|
|
53
52
|
- !ruby/object:Gem::Dependency
|
|
54
53
|
name: openapi_parameters
|
|
55
54
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -118,28 +117,28 @@ dependencies:
|
|
|
118
117
|
requirements:
|
|
119
118
|
- - '='
|
|
120
119
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: 1.
|
|
120
|
+
version: 1.72.1
|
|
122
121
|
type: :development
|
|
123
122
|
prerelease: false
|
|
124
123
|
version_requirements: !ruby/object:Gem::Requirement
|
|
125
124
|
requirements:
|
|
126
125
|
- - '='
|
|
127
126
|
- !ruby/object:Gem::Version
|
|
128
|
-
version: 1.
|
|
127
|
+
version: 1.72.1
|
|
129
128
|
- !ruby/object:Gem::Dependency
|
|
130
129
|
name: rubocop-rspec
|
|
131
130
|
requirement: !ruby/object:Gem::Requirement
|
|
132
131
|
requirements:
|
|
133
132
|
- - '='
|
|
134
133
|
- !ruby/object:Gem::Version
|
|
135
|
-
version:
|
|
134
|
+
version: 3.7.0
|
|
136
135
|
type: :development
|
|
137
136
|
prerelease: false
|
|
138
137
|
version_requirements: !ruby/object:Gem::Requirement
|
|
139
138
|
requirements:
|
|
140
139
|
- - '='
|
|
141
140
|
- !ruby/object:Gem::Version
|
|
142
|
-
version:
|
|
141
|
+
version: 3.7.0
|
|
143
142
|
- !ruby/object:Gem::Dependency
|
|
144
143
|
name: simplecov
|
|
145
144
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -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
|
|
@@ -207,18 +204,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
207
204
|
requirements:
|
|
208
205
|
- - ">="
|
|
209
206
|
- !ruby/object:Gem::Version
|
|
210
|
-
version: '3.
|
|
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.9
|
|
222
218
|
specification_version: 4
|
|
223
219
|
summary: Openapi schemas as API contracts
|
|
224
220
|
test_files: []
|