Skip to content

Commit 101a11e

Browse files
authored
Merge pull request #85 from p1c2u/feature/collection-validation
Collection validation
2 parents 7d1f568 + e395b50 commit 101a11e

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

openapi_core/schema/schemas/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ def _unmarshal_properties(self, value, one_of_schema=None):
243243

244244
def get_validator_mapping(self):
245245
mapping = {
246+
SchemaType.ARRAY: self._validate_collection,
246247
SchemaType.OBJECT: self._validate_object,
247248
}
248249

@@ -270,6 +271,12 @@ def validate(self, value):
270271

271272
return value
272273

274+
def _validate_collection(self, value):
275+
if self.items is None:
276+
raise OpenAPISchemaError("Schema for collection not defined")
277+
278+
return list(map(self.items.validate, value))
279+
273280
def _validate_object(self, value):
274281
properties = value.__dict__
275282

tests/unit/schema/test_schemas.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from openapi_core.extensions.models.models import Model
77
from openapi_core.schema.schemas.exceptions import (
8-
InvalidSchemaValue, MultipleOneOfSchema, NoOneOfSchema,
8+
InvalidSchemaValue, MultipleOneOfSchema, NoOneOfSchema, OpenAPISchemaError,
99
)
1010
from openapi_core.schema.schemas.models import Schema
1111

@@ -199,9 +199,16 @@ def test_boolean_invalid(self, value):
199199
schema.validate(value)
200200

201201
@pytest.mark.parametrize('value', [[1, 2], (3, 4)])
202-
def test_array(self, value):
202+
def test_array_no_schema(self, value):
203203
schema = Schema('array')
204204

205+
with pytest.raises(OpenAPISchemaError):
206+
schema.validate(value)
207+
208+
@pytest.mark.parametrize('value', [[1, 2], (3, 4)])
209+
def test_array(self, value):
210+
schema = Schema('array', items=Schema('integer'))
211+
205212
result = schema.validate(value)
206213

207214
assert result == value

0 commit comments

Comments
 (0)