cebe / cebe/php-openapi

allOf validation not working?

Abierto
#120 2 comentarios 0 reacciones 0 asignados Ver en GitHub
good first issue hacktoberfest help wanted
Lenguaje dominante
PHP
Estrellas
500
Forks
99
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hi, I'm having issues getting an example spec using `allOf` to work. This is the spec, as provided by the [OpenAPI docs](https://swagger.io/docs/specification/data-models/oneof-anyof-allof-not/):

```yml
openapi: 3.0.0
info:
title: AllOf.v1
version: '1.0'
servers:
- url: 'http://localhost:3000'
paths:
/pets:
patch:
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Cat'
- $ref: '#/components/schemas/Dog'
discriminator:
propertyName: pet_type
responses:
'200':
description: Updated
components:
schemas:
Pet:
type: object
required:
- pet_type
properties:
pet_type:
type: string
Dog: # "Dog" is a value for the pet_type property (the discriminator value)
allOf: # Combines the main `Pet` schema with `Dog`-specific properties
- $ref: '#/components/schemas/Pet'
- type: object
# all other properties specific to a `Dog`
properties:
bark:
type: boolean
breed:
type: string
enum: [ Dingo, Husky, Retriever, Shepherd ]
Cat: # "Cat" is a value for the pet_type property (the discriminator value)
allOf: # Combines the main `Pet` schema with `Cat`-specific properties
- $ref: '#/components/schemas/Pet'
- type: object
# all other properties specific to a `Cat`
properties:
hunts:
type: boolean
age:
type: integer
```
My test attempts to send a JSON `PATCH` request to the `/pets` endpoint, using:
```php
[
'pet_type' => 'Cat',
'age' => 3,
'hunts' => true,
]
```
However, this only results in:
```sh
Request body did not match provided JSON schema.
```
Digging in a bit more, it appears that the validator doesn't see the `pet_type` property it should be inheriting from the `Pet` component.

Any experience with this, or ideas? Thanks in advance.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Reproduce la solicitud JSON PATCH contra `/pets` utilizando el documento OpenAPI proporcionado y la referencia `allOf` del esquema `Cat` a `Pet`. Sigue cómo el validador resuelve `Pet` y su propiedad heredada `pet_type`, y determina después si la solicitud se acepta o por qué la validación la rechaza. En el issue no se mencionan archivos de proyecto ni pruebas.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
openapi, php
Área
api
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.