[Bug]: Query parameter validation fails to match empty string when listed as a valid enum value

Ouverte
#1,210 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
68/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
python
Domaine
api

Piste de recherche

Start with the OpenAPI.from_dict and MockRequest reproduction, then trace iter_request_errors through query-parameter enum validation. Add a regression test covering status= when the enum includes an empty string, and confirm the request is accepted without a ParameterValidationError.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

kind/bug
Actual Behavior

Run the following code:

from openapi_core import OpenAPI
from openapi_core.testing import MockRequest

SPEC = {
    "openapi": "3.2.0",
    "info": {"title": "Sample", "version": "1.0.0"},
    "paths": {
        "/api": {
            "get": {
                "tags": ["Sample"],
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "schema": {"enum": ["Active", "Inactive", "Pending", ""]},
                    }
                ]
            }
        }
    },
    "tags": [{"name": "Sample"}],
}

openapi = OpenAPI.from_dict(SPEC)

# Empty query parameter: status=
request = MockRequest(
    host_url="http://localhost",
    method="get",
    path="/api",
    args={"status": ""},
)

if hasattr(openapi, "iter_request_errors"):
    errors = list(openapi.iter_request_errors(request))
    if errors:
        print("INVALID")
        for e in errors:
            print(f"  {type(e).__name__}: {e}")
    else:
        print("VALID")
else:
    try:
        openapi.validate_request(request)
        print("VALID")
    except Exception as exc:
        print("INVALID")
        print(f"  {type(exc).__name__}: {exc}")

It prints:

INVALID
  ParameterValidationError: Query parameter error: status
Expected Behavior

It should print VALID.

OpenAPI Core Version

0.23.1

See https://github.com/OAI/OpenAPI-Specification/discussions/5411

Langage dominant
Python
Étoiles
368
Forks
140
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de python-openapi/openapi-core

Toutes les issues de python-openapi/openapi-core

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.