openapi_parser 0.4.1 → 0.5.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: 231442c0833af9713844f6ec76a3237b58b7d53421f89f609647a45defe254eb
4
- data.tar.gz: 7961d3feda26b9ab4bb8d3928f76d60664a8508c0275f6c8786fafb26b52c8dd
3
+ metadata.gz: 69b353b6b05a25b119a50ef0baf9fe56d749158a18e429e2ed3632effb0c2de7
4
+ data.tar.gz: e122e4b7942ed9cb53fa70f0a7c9eef316fb6384342a5ff8b66cf9f998f9d95a
5
5
  SHA512:
6
- metadata.gz: e9019a266e7c64f99e246306eb469d636bdf3396571252d0bd8fbf58ef64065a72195d7d22b0141c944ecbc65f9b7c8a3eb9f8d6561af0ae1610b5d3b48dd71a
7
- data.tar.gz: 4b497c986b74e04e2ae8700f565a17c66428a0b62f1e0e972b7b2a517efcb8879c3003e6ce3b03d87f3a3ef4df15d37b4f9632d94ca4f7c42dfe9cd324a2198c
6
+ metadata.gz: f0ec9b54da1a51781be3786c6def47e4e673fda8fdf5ad6362813725362c7a0ce9a1464dcee37f9f629f4dab796fa623b8578c7182af9e3e0f28e6257318e03a
7
+ data.tar.gz: 13effd1bac35ae340f98bd3127569f7bce3184586dc44a109016fc243e867731d6824973f0cc4607cf1095e2e05729f499b5528d108a109b192c7f48c5f9a823
@@ -1,6 +1,10 @@
1
1
  ## Unreleased
2
2
 
3
- ## 0.4.0 (2019-07-27)
3
+ ## 0.5.0 (2019-09-28)
4
+ * Add max and min length validators for string. #45
5
+ * Support for minItems and maxItems in array #49
6
+
7
+ ## 0.4.1 (2019-07-27)
4
8
  * release missed
5
9
 
6
10
  ## 0.4.0 (2019-07-27)
@@ -177,4 +177,48 @@ module OpenAPIParser
177
177
  "don't exist response definition #{@reference}"
178
178
  end
179
179
  end
180
+
181
+ class MoreThanMaxLength < OpenAPIError
182
+ def initialize(value, reference)
183
+ super(reference)
184
+ @value = value
185
+ end
186
+
187
+ def message
188
+ "#{@value} cannot be more than max length in #{@reference}"
189
+ end
190
+ end
191
+
192
+ class LessThanMinLength < OpenAPIError
193
+ def initialize(value, reference)
194
+ super(reference)
195
+ @value = value
196
+ end
197
+
198
+ def message
199
+ "#{@value} cannot be less than min length in #{@reference}"
200
+ end
201
+ end
202
+
203
+ class MoreThanMaxItems < OpenAPIError
204
+ def initialize(value, reference)
205
+ super(reference)
206
+ @value = value
207
+ end
208
+
209
+ def message
210
+ "#{@value} cannot be more than max items in #{@reference}"
211
+ end
212
+ end
213
+
214
+ class LessThanMinItems < OpenAPIError
215
+ def initialize(value, reference)
216
+ super(reference)
217
+ @value = value
218
+ end
219
+
220
+ def message
221
+ "#{@value} cannot be less than min items in #{@reference}"
222
+ end
223
+ end
180
224
  end
@@ -5,9 +5,11 @@ class OpenAPIParser::SchemaValidator
5
5
  def coerce_and_validate(value, schema, **_keyword_args)
6
6
  return OpenAPIParser::ValidateError.build_error_result(value, schema) unless value.kind_of?(Array)
7
7
 
8
+ value, err = validate_max_min_items(value, schema)
9
+ return [nil, err] if err
10
+
8
11
  # array type have an schema in items property
9
12
  items_schema = schema.items
10
-
11
13
  coerced_values = value.map do |v|
12
14
  coerced, err = validatable.validate_schema(v, items_schema)
13
15
  return [nil, err] if err
@@ -19,5 +21,12 @@ class OpenAPIParser::SchemaValidator
19
21
 
20
22
  [value, nil]
21
23
  end
24
+
25
+ def validate_max_min_items(value, schema)
26
+ return [nil, OpenAPIParser::MoreThanMaxItems.new(value, schema.object_reference)] if schema.maxItems && value.length > schema.maxItems
27
+ return [nil, OpenAPIParser::LessThanMinItems.new(value, schema.object_reference)] if schema.minItems && value.length < schema.minItems
28
+
29
+ [value, nil]
30
+ end
22
31
  end
23
32
  end
@@ -21,6 +21,9 @@ class OpenAPIParser::SchemaValidator
21
21
  return [nil, err] if err
22
22
  end
23
23
 
24
+ value, err = validate_max_min_length(value, schema)
25
+ return [nil, err] if err
26
+
24
27
  [value, nil]
25
28
  end
26
29
 
@@ -51,5 +54,12 @@ class OpenAPIParser::SchemaValidator
51
54
 
52
55
  [nil, OpenAPIParser::InvalidPattern.new(value, schema.pattern, schema.object_reference)]
53
56
  end
57
+
58
+ def validate_max_min_length(value, schema)
59
+ return [nil, OpenAPIParser::MoreThanMaxLength.new(value, schema.object_reference)] if schema.maxLength && value.size > schema.maxLength
60
+ return [nil, OpenAPIParser::LessThanMinLength.new(value, schema.object_reference)] if schema.minLength && value.size < schema.minLength
61
+
62
+ [value, nil]
63
+ end
54
64
  end
55
65
  end
@@ -2,6 +2,6 @@ module OpenAPIParser::Schemas
2
2
  class Paths < Base
3
3
  # @!attribute [r] path
4
4
  # @return [Hash{String => PathItem, Reference}, nil]
5
- openapi_attr_hash_body_objects 'path', PathItem, allow_reference: false, allow_data_type: false
5
+ openapi_attr_hash_body_objects 'path', PathItem, reference: false, allow_data_type: false
6
6
  end
7
7
  end
@@ -8,7 +8,7 @@ module OpenAPIParser::Schemas
8
8
 
9
9
  # @!attribute [r] response
10
10
  # @return [Hash{String => Response, Reference}, nil] response object indexed by status code. see: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#patterned-fields-1
11
- openapi_attr_hash_body_objects 'response', Response, reject_keys: [:default], allow_reference: true, allow_data_type: false
11
+ openapi_attr_hash_body_objects 'response', Response, reject_keys: [:default], reference: true, allow_data_type: false
12
12
 
13
13
  # validate params data by definition
14
14
  # find response object by status_code and content_type
@@ -1,3 +1,3 @@
1
1
  module OpenAPIParser
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = '0.5.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ota42y
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-27 00:00:00.000000000 Z
11
+ date: 2019-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler