cebe / php-openapi

Read and write OpenAPI yaml/json files and make the content accessible in PHP objects.
MIT License
469 stars 89 forks source link

Wrong error message when using an undefined property for a schema object property definition #165

Open machitgarha opened 2 years ago

machitgarha commented 2 years ago

First of all, thanks for the efforts made on php-openapi. :)

Take the following simple (minimal reproducable) example:

openapi: 3.0.3
info:
  title: Test
  version: 0.1.0
paths:
  /test:
    get:
      responses:
        "200":
          description: Test

components:
  schemas:
    answer:
      type: object
      properties:
        id:
          type: integer

We all know, this is perfectly valid. But for some odd reason, I thought the summary property is allowed in an Schema Object (i.e. id in this case), so I wrote the above example this way:

# ...Stripped...
        id:
          type: integer
          summary: Unique answer ID

As this becomes invalid (description must be used instead), php-openapi must handle this and print a good error message. Let's see:

OpenAPI v3.0 schema violations:
- [components.schemas.answer.properties.id.$ref] The property $ref is required
- [components.schemas.answer.properties.id] The property summary is not defined and the definition does not
 allow additional properties

Ignoring the second error message, the first one is really confusing, and is completely wrong in this case. This can be daunting if you run php-openapi on a big erroneous document and getting bunches of these errors.

cebe commented 2 years ago

Thanks for reporting. The error message shown here is the result of running justinrainbow/json-schema validator against the schema provided by OpenAPI https://github.com/OAI/OpenAPI-Specification/tree/main/schemas/v3.0 Not sure if there is anything I can change about it from our code, needs to be checked.