Commit graph

44 commits

Author SHA1 Message Date
p1c2u
fc60083e78 Get rid of schema validation in unmarshal 2019-09-13 01:55:22 +01:00
p1c2u
a2fc5284c6 Get rid of object validator 2019-09-12 19:56:39 +01:00
p1c2u
b2410e2f3a OAS 3.0 validator 2019-09-12 19:46:11 +01:00
p1c2u
c4c51637d2 Rename schema validate to obj_validate 2019-09-12 19:46:11 +01:00
p1c2u
5273a7ff7c Separate cast and unmarshal 2019-09-02 23:48:13 +01:00
Artur Maciag
9d9629b4bd Primitive types unmarshallers 2019-06-17 16:24:46 +01:00
A
0df1d051b4
Merge pull request #133 from crunchr/support-any-type-with-one-of-rb1
Add support for one-of with any type
2019-06-17 13:28:41 +01:00
Daniel Bradburn
d742a03f0f remove unused import 2019-06-08 11:03:58 +02:00
A
98f72bff1b
Merge pull request #134 from dz0ny/fix/number_parsing
Fix number validator
2019-05-21 13:19:07 +01:00
Artur Maciag
63f3ffb09f Number format added 2019-05-21 12:54:13 +01:00
Janez Troha
3339e1311a Fix number validator
The `integer_types` is always a tuple. When checking
if an instance is a number it fails because it's doing a comparison against a tuple
instead of real type.

➜ python -c "from six import integer_types;import sys;print(integer_types);print(sys.version)"
(<type 'int'>, <type 'long'>)
2.7.16 (default, Apr  6 2019, 01:42:57)
[GCC 8.3.0]

➜ python3 -c "from six import integer_types;import sys;print(integer_types);print(sys.version)"
(<class 'int'>,)
3.7.3 (default, Apr  3 2019, 05:39:12)
[GCC 8.3.0]

And spec defines a number as both int and float https://swagger.io/docs/specification/data-models/data-types/#numbers so both validators need to support both types.
2019-05-15 19:00:38 +02:00
Daniel Bradburn
7d903a8907 Add support for one-of with any type 2019-05-02 15:50:38 +02:00
Nejc Zupan
13e65a2d91 Add missing STRING_FORMAT_CALLABLE_GETTER: SchemaFormat.PASSWORD
`password` is a valid OpenAPIv3 string format, that is used as a UI hint
for frontend clients to mask the input field.

It was already present in the `SchemaFormat` enum, but it was not
handled in `_unmarshal_string` that uses `STRING_FORMAT_CALLABLE_GETTER`
to decide how to unmarshal a string, which would result in an error like
this one:

```
Traceback (most recent call last):
  [... snip ...]
  File ".venv/lib/python3.7/site-packages/openapi_core/validation/request/validators.py", line 37, in validate
    body, body_errors = self._get_body(request, operation)
  File ".venv/lib/python3.7/site-packages/openapi_core/validation/request/validators.py", line 82, in _get_body
    body = media_type.unmarshal(raw_body, self.custom_formatters)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/media_types/models.py", line 45, in unmarshal
    unmarshalled = self.schema.unmarshal(deserialized, custom_formatters=custom_formatters)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 189, in unmarshal
    casted = self.cast(value, custom_formatters=custom_formatters, strict=strict)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 179, in cast
    return cast_callable(value)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 295, in _unmarshal_object
    value, custom_formatters=custom_formatters)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 335, in _unmarshal_properties
    prop_value, custom_formatters=custom_formatters)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 189, in unmarshal
    casted = self.cast(value, custom_formatters=custom_formatters, strict=strict)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 179, in cast
    return cast_callable(value)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 295, in _unmarshal_object
    value, custom_formatters=custom_formatters)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 335, in _unmarshal_properties
    prop_value, custom_formatters=custom_formatters)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 189, in unmarshal
    casted = self.cast(value, custom_formatters=custom_formatters, strict=strict)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 179, in cast
    return cast_callable(value)
  File ".venv/lib/python3.7/site-packages/openapi_core/schema/schemas/models.py", line 215, in _unmarshal_string
    formatstring = self.STRING_FORMAT_CALLABLE_GETTER[schema_format]
KeyError: <SchemaFormat.PASSWORD: 'password'>
```
2019-04-26 20:22:54 +01:00
Artur Maciag
4d99cbe7e1 Move additional props check to separate method 2019-03-26 13:27:44 +00:00
Diogo Baeder de Paula Pinto
b029066add Fix #124: Checking "additionalProperties" in "oneOf" items.
This is important because it does the correct validation over items that
are restricted in "oneOf", so that it's possible to use schemas that are
superset of one another as items of "oneOf".
2019-03-26 02:30:07 -03:00
Artur Maciąg
f8e4e34e39 String byte format fix 2019-03-22 14:35:12 +00:00
A
beaa08a9c0
Merge branch 'master' into master 2019-03-22 13:29:04 +00:00
A
aa978cbe00
Merge pull request #121 from ondratu/master
Object additionalProperties support
2019-03-22 13:21:43 +00:00
Artur Maciąg
cd0ca5d26f Raw value type strict validation 2019-03-22 11:21:50 +00:00
Ondrej Tuma
83b9c37915 Object additionalProperties support
* Default is true like in specification
* When is set false, it works like in past
* Object with types works
2019-03-12 16:01:28 +01:00
Diogo Baeder de Paula Pinto
a08b62035e Properly formatting UUID if value to be unmarshalled is already a UUID.
Before this change, if a UUID instance got received as value in the
Schema, it was breaking the unmarshal because UUID instances can't be
used as values to instantiate other UUIDs.
2019-02-28 18:25:22 -03:00
Artur Maciag
a533a080cc byte string format 2019-02-27 00:59:45 +00:00
Diogo Baeder de Paula Pinto
dadf075670 Accepting uuid string format and validating accordingly. 2019-02-26 02:57:50 -03:00
Ben Howes
3d2926871b
Dont use value for determining any type
otherwise Falsy values are not valid types
2018-12-11 14:49:13 +00:00
Domen Kožar
399602f013
sync master changes with exception refactoring 2018-09-13 11:59:44 +01:00
Domen Kožar
17ea740b7b
Add field name to all property errors 2018-09-13 10:58:36 +01:00
Domen Kožar
6bdd1a6756
Rewrok exception handling
Main motivation behind this change is to be able to catch exceptions
as per raise_for_errors() helpers, but to inspect state of exceptions
instead of just getting a rendered string. This allows rendering
exceptions into JSON, for example.
2018-09-13 10:58:35 +01:00
Domen Kožar
89a53f6edc
review feedback 2018-09-13 10:58:33 +01:00
Domen Kožar
64628d1cc9
Sketch out custom formatters design 2018-09-13 10:41:34 +01:00
8db5c08ed1 Add support for additional validation properties
Add support for the following validation properties:
- multipleOf
- maximum
- exclusiveMaximum
- minimum
- exclusiveMinimum
- maxLength
- minLength
- pattern
- maxItems
- minItems
- uniqueItems
- maxProperties
- minProperties

Fixes #49
2018-09-09 00:30:38 -04:00
p1c2u
0cbbdb0232 Unmarshal any schema type 2018-08-23 09:29:36 +01:00
p1c2u
05b8a30091 Any schema type 2018-08-22 14:27:32 +01:00
Artur Maciag
82f32be1e7 String validation 2018-08-22 13:49:24 +01:00
Artur Maciag
e395b50558 Collection validation 2018-08-22 10:29:39 +01:00
Artur Maciag
3aaa3ceb8b Separate type and structure validation 2018-08-22 10:05:15 +01:00
p1c2u
0915e94530 Object validation 2018-08-22 09:34:18 +01:00
Artur Maciag
f9a7472c92 Separate schema casting and validation 2018-08-17 18:35:21 +01:00
grktsh
d4f65a2ed2 Support unmarshaling string with format keyword 2018-08-17 13:25:12 +09:00
Konrad Cempura
b8c03d90f4 Python 2.7: Copy list using slice 2018-07-15 23:46:38 +02:00
Artur Maciag
78f55ee80f Schema additional properties support 2018-05-30 11:20:35 +01:00
Artur Maciag
d87b60ade7 Schema format accepts any value 2018-05-30 09:41:34 +01:00
Artur Maciag
4c75f0f9b7 OneOf schema support 2018-05-25 16:50:09 +01:00
Artur Maciag
4e1a61aace Exceptions restructure 2018-05-25 11:30:50 +01:00
Artur Maciag
734a4673f8 Schema objects restructure 2018-05-25 11:30:50 +01:00
Renamed from openapi_core/schemas.py (Browse further)