Commit graph

195 commits

Author SHA1 Message Date
Artur Maciag
fde1b6bdc5 Security providers and security models retouch 2020-02-04 13:58:42 +00:00
Artur Maciag
4ae5a085a3 Security HTTP scheme type support 2020-02-04 11:14:51 +00:00
p1c2u
d915f23414 Security validation with Api Key support 2020-02-04 11:06:52 +00:00
p1c2u
75643da1af Free-form objects unmarshal 2020-02-03 20:58:27 +00:00
p1c2u
d4ac0978d5 Missing Info models 2020-02-03 19:50:21 +00:00
Artur Maciag
ab2e10f998 Custom media type deserializers 2020-02-03 18:35:48 +00:00
Artur Maciag
4044483194 style fixes 2020-02-03 14:55:50 +00:00
Artur Maciag
6d8b2e5111 Move media deserializers to separate subpackage 2020-02-03 13:34:43 +00:00
Artur Maciag
58d5c26fee Move param deserializers to separate subpackage 2020-02-03 13:05:44 +00:00
Artur Maciag
7da1ea6b77 Get rid of cast in schema 2020-02-03 10:59:27 +00:00
Artur Maciag
b4c10e847a Split cast and deserialise processes 2020-02-03 10:17:27 +00:00
Artur Maciag
475076a2a2 Deserialize models without schema 2020-02-03 09:31:02 +00:00
p1c2u
61fb830ac2 Get rid of unmarshal in schema 2020-02-03 01:30:25 +00:00
p1c2u
3f7442624a Move unmarshal out of schema models 2020-02-02 22:56:25 +00:00
Artur Maciag
376dc205ae unmarshalling formatters 2020-02-01 23:50:56 +00:00
Artur Maciag
6b6abc0b01 Move schema validator to separate subpackage 2020-01-28 09:51:09 +00:00
Artur Maciag
5059f05396 Flask OpenAPI request parameters 2020-01-27 11:23:20 +00:00
p1c2u
b5aabf213c FlaskOpenAPIView handler change 2020-01-26 23:29:19 +00:00
Artur Maciag
0d0fa524cf Flask OpenAPI view 2020-01-24 21:01:21 +00:00
p1c2u
b026fb2151 Move Unmarshallers to separate subpackage 2020-01-23 18:30:31 +00:00
Artur Maciag
da3b6ee669 Shortcuts cleanup 2020-01-17 14:52:26 +00:00
Gouji Ochiai
e88bef490d webob's multidict protocol does not support getlist. 2019-11-19 13:06:50 +09:00
p1c2u
44de9c4322 Validation schema errors iter fix 2019-10-22 22:01:17 +01:00
p1c2u
c4d4ed8515 Server missing fields 2019-10-22 18:21:40 +01:00
p1c2u
d7840d0d61 Operations more fields 2019-10-22 17:20:52 +01:00
p1c2u
cfdf3410d2 Narrow validation exceptions 2019-10-20 15:06:13 +01:00
p1c2u
2bca2526f2 Schema validation errors list 2019-10-20 15:06:11 +01:00
p1c2u
88459829ad Schema validate exceptions refactor 2019-10-20 13:25:21 +01:00
p1c2u
939cec94e7 Schema unmarshal exceptions refactor 2019-10-20 13:00:14 +01:00
p1c2u
eb2530590d Django 2.2 for python3 setup 2019-10-20 03:06:56 +01:00
p1c2u
2000b1215f Django OpenAPI request/response factories 2019-10-20 00:58:28 +01:00
p1c2u
0bbf787423 Flask factories; Get rid of wrappers 2019-10-19 13:35:48 +01:00
p1c2u
cffc47c60a OpenAPI request and response datatypes 2019-10-19 13:01:56 +01:00
p1c2u
8a614de0bb Restructure flask and mock 2019-10-19 12:01:57 +01:00
p1c2u
48ee8f9f87 Validation result datatypes and tests restructure 2019-10-19 10:55:32 +01:00
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
Gerhard Weis
3d23f17c1d add test to check parameter uniqueness is handled correctly in validator 2019-06-20 06:38:00 +10:00
Gerhard Weis
d490d5774b fix path parameter validation when overridden on operation 2019-06-20 06:23:54 +10:00
Gerhard Weis
a8248a53da parameters are unique as long as name and location are unique. 2019-06-20 05:09:33 +10:00
Gerhard Weis
a1dfaf6adb make flake8 happy 2019-06-19 08:59:50 +10:00
Gerhard Weis
a8d7d9b9dc very simple and hacky path item parameter override test 2019-06-19 08:49:03 +10:00
Artur Maciag
e8d98dfdf7 TestPathItemParamsValidator linting fix 2019-06-18 16:35:45 +01:00
Artur Maciag
27ebae3182 Parameters on path item object support 2019-06-18 16:31:42 +01:00
Gerhard Weis
40944119d1 add failing test for parameters on path item object 2019-06-18 15:42:19 +01:00
Artur Maciag
c9b2d8c4f8 attr errors hashable fix 2019-06-18 14:54:02 +01:00
A
9376b2e2da
Merge pull request #141 from bjmc/flask_params
Modify FlaskOpenAPIRequest to accomodate path variables
2019-06-17 15:38:45 +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
Brendan McCollam
3093364304 PEP8 2019-06-12 12:16:55 +01:00
Brendan McCollam
2908015745 Adds test for request validator w/Flask wrapper
formatting
2019-06-12 12:16:55 +01:00
Brendan McCollam
934550324e Fix pre-existing test 2019-06-12 12:16:55 +01:00
Brendan McCollam
2ec02e473e Adds failing test
Adds flask_wrapper.yaml spec
2019-06-12 11:37:10 +01:00
Daniel Bradburn
a1596ea8c3 remove unused import 2019-06-08 11:21:59 +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
A
f0cfa2d0e0
Merge pull request #131 from MCapitani/links
add support for "links" in Response
2019-05-21 12:26:32 +01:00
A
f5d26112b2
Merge pull request #130 from MCapitani/add-path-param
add support for path-level parameters
2019-05-17 10:30:51 +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
14196b6ce1 Fix #124: Fixing test for Python 2. 2019-03-26 03:41:14 -03: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
c846b2e453
Merge pull request #112 from diogobaeder/master
Properly formatting UUID if value to be unmarshalled is already a UUID.
2019-03-22 14:30:02 +00:00
Artur Maciag
aa206d868e Test string format quirks rename fix 2019-03-22 14:14:42 +00:00
Artur Maciag
d0e163b5ba Test string format UUID non strict fix 2019-03-22 14:05:54 +00:00
Artur Maciag
9aa16dff0f Test object with invalid additional properties fix 2019-03-22 13:44:05 +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
Marco Capitani
f748783842 add support for "links" in Response 2019-03-08 14:12:11 +01:00
Marco Capitani
f232f7419b add support for path-level parameters 2019-03-08 10:19:09 +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
Artur Maciag
48d1d1c8ae UUID string format tests 2019-02-26 14:22:28 +00:00
A
922fce4085
Merge pull request #75 from smarlowucf/flake8
Switch test requirement to pytest-flake8.
2019-02-24 03:29:44 +00:00
Artur Maciąg
dccb93bbfe test validaotr escape sequence fix 2019-02-24 02:28:45 +00:00
A
114ab79162
Merge branch 'master' into date-time-rfc3339 2018-09-13 20:42:32 +01:00
Domen Kožar
399602f013
sync master changes with exception refactoring 2018-09-13 11:59:44 +01:00
Domen Kožar
286e26c4ed
openapi 3.0 defines date-time format to be rfc3339 2018-09-12 15:16:46 +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
Marcin Molenda
e5cb549ea1 Expose tags in Operation object 2018-08-31 16:57:53 +02: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
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
Artur Maciag
b75798aa62 Handle parameter deserialization errors 2018-08-17 13:25:31 +01:00
grktsh
d4f65a2ed2 Support unmarshaling string with format keyword 2018-08-17 13:25:12 +09:00
A
ac797bcf2a
Merge pull request #46 from HoverHell/paramlocations
Request headers and cookies parameter parsing fix
2018-08-13 20:21:46 +01:00
p1c2u
a9d858e940 Python2 compatibility module 2018-07-29 00:16:30 +01:00
p1c2u
3ab55e44bd Lazy schema references 2018-07-28 22:12:47 +01:00
Rafael Caricio
15fc9b009a Makes it possible to access API examples 2018-07-24 09:47:02 +02:00
Rafael Caricio
8ab0b6206e Populate operation_id attr 2018-07-23 18:02:51 +02:00
Artur Maciag
f8e977cc17 Parameters tests 2018-07-09 12:10:05 +01:00