No specific error information available.

Offen
#160 0 Kommentare 8 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
tooling

Rechercherichtung

Reproduce the validation with the provided model.yaml and validate_v30_spec(spec_dict), then inspect how OpenAPIValidationError and the iterator expose jsonschema failures. Trace the reported response error back to components/schemas/Pet/properties/id, and consider the work complete when that invalid additional property is identified in the resulting error.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

First of all, I'm focussing on validating models (components/schemas) in an OpenAPI 3.0.0. yaml file.
I'm testing with a slightly changed petstore.yaml (keep an eye on components/schemas/Pet/properties/id which has an extra attribute min instead of minimal):

openapi: "3.0.0"
info:
  version: 1.0.0
  title: Swagger Petstore
  license:
    name: MIT
servers:
  - url: http://petstore.swagger.io/v1
paths:
  /pets:
    get:
      summary: List all pets
      operationId: listPets
      tags:
        - pets
      parameters:
        - name: limit
          in: query
          description: How many items to return at one time (max 100)
          required: false
          schema:
            type: integer
            format: int32
      responses:
        200:
          description: An paged array of pets
          headers:
            x-next:
              description: A link to the next page of responses
              schema:
                type: string
          content:
            application/json:    
              schema:
                $ref: "#/components/schemas/Pets"
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      summary: Create a pet
      operationId: createPets
      tags:
        - pets
      responses:
        '201':
          description: Null response
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /pets/{petId}:
    get:
      summary: Info for a specific pet
      operationId: showPetById
      tags:
        - pets
      parameters:
        - name: petId
          in: path
          required: true
          description: The id of the pet to retrieve
          schema:
            type: string
      responses:
        '200':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pets"
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
components:
  schemas:
    Pet:
      required:
        - id
        - name
      properties:
        id:
          min: 1
          type: integer
          format: int64
        name:
          type: string
        tag:
          type: string
        $ref:
          type: string
    Pets:
      type: array
      items:
        $ref: "#/components/schemas/Pet"
    Error:
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string

Swagger Editor reports nicely on that little "typo" in pet's property id:

grafik

No matter what I try with openapi-spec-validator, it reqognizes an error like that from above but the error (OpenAPIValidationError or iterator) is totally unspecific.

Validating the above yaml with:

  try:
      spec_dict, spec_url = read_from_filename('model.yaml')
      validate_v30_spec(spec_dict)
  except IOError as e:
      print(e)
  except OpenAPIValidationError as e:
      print(e)

...gives an output like:

{'description': 'An paged array of pets', 'headers': {'x-next': {'description': 'A link to the next page of responses', 'schema': {'type': 'string'}}}, 'content': {'application/json': {'schema': {'$ref': '#/components/schemas/Pets', 'x-scope': ['']}}}} is not valid under any of the given schemas

Failed validating 'oneOf' in schema['properties']['paths']['patternProperties']['^\\/']['patternProperties']['^(get|put|post|delete|options|head|patch|trace)$']['properties']['responses']['patternProperties']['^[1-5](?:\\d{2}|XX)$']:
    {'oneOf': [{'$ref': '#/definitions/Response'},
               {'$ref': '#/definitions/Reference'}]}

On instance['paths']['/pets']['get']['responses']['200']:
    {'content': {'application/json': {'schema': {'$ref': '#/components/schemas/Pets',
                                                 'x-scope': ['']}}},
     'description': 'An paged array of pets',
     'headers': {'x-next': {'description': 'A link to the next page of '
                                           'responses',
                            'schema': {'type': 'string'}}}}

No hint on that specific error ("additionalProperty in pet.id" or something like that).

Is openapi-spec-validator not what I'm looking for?
Do I use this validator in a wrong way?
Do I miss anything?

Vorherrschende Sprache
Python
Sterne
409
Forks
73
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus python-openapi/openapi-spec-validator

Alle Issues in python-openapi/openapi-spec-validator

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.