Giving an integer value as default for a double, causes the validation to fail

Aperta
#115 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
42/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
openapi, python
Ambito
api, testing

Direzione di ricerca

Reproduce the failure with the provided openapi.yaml using openapi_spec_validator.readers.read_from_filename and validate_spec. Compare validation of integer and floating-point defaults for a number with format double; done means the intended behavior is established and covered by a regression test, while preserving the valid 15.0 case.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Hi,
I noticed that there is a breaking change from 0.2.9 to 0.3.0, but I am not sure if it is intentional or not.

tl;dr: an integer is no longer considered a valid (default) value for a double. In the example below, 15 fails the validation, but 15.0 is fine.

PS: I am using openapi-spec-validator through the connexion library.

Steps to reproduce
python -m venv .venv
source .venv/bin/activate
pip install "openapi-spec-validator@0.3.0"
>>> from openapi_spec_validator import validate_spec
>>> from openapi_spec_validator.readers import read_from_filename
>>>
>>> spec_dict, spec_url = read_from_filename('./openapi.yaml')
>>> validate_spec(spec_dict)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<current working directory>/.venv/lib/python3.9/site-packages/openapi_spec_validator/shortcuts.py", line 7, in validate
    return validator_callable(spec, spec_url=spec_url)
  File "<current working directory>/__app__/.venv/lib/python3.9/site-packages/openapi_spec_validator/validators.py", line 48, in validate
    raise err
openapi_spec_validator.exceptions.OpenAPIValidationError: 15 is not a 'double'

Failed validating 'format' in schema:
    {'default': 15,
     'format': 'double',
     'maximum': 60,
     'minimum': 15,
     'nullable': False,
     'type': 'number'}

On instance:
    15

where openapi.yaml is defined as

openapi: "3.0.3"
info:
  title: API
  version: "1.0.0"

servers:
  - url: http://localhost/api
    description: Used for local development.
paths:
  /foo:
    get:
      parameters:
        - in: query
          name: duration
          required: false
          schema:
            type: number
            format: double
            default: 15
            maximum: 60
            minimum: 15
          example: 53

      responses:
        200:
          description: ""
          content:
            text/plain: {}

Changing default: 15 to default: 15.0 works as expected.

In version 0.2.9, the OpenAPI specification above was considered valid.

Lingua principale
Python
Stelle
409
Fork
73
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di python-openapi/openapi-spec-validator

Tutte le issue di python-openapi/openapi-spec-validator

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.