cebe / cebe/php-openapi

allOf validation not working?

Aperta
#120 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
good first issue hacktoberfest help wanted
Lingua principale
PHP
Stelle
500
Fork
99
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Riproduci la richiesta JSON PATCH verso `/pets` utilizzando il documento OpenAPI fornito e il riferimento `allOf` dello schema `Cat` a `Pet`. Traccia il modo in cui il validator risolve `Pet` e la relativa proprietà ereditata `pet_type`, quindi stabilisci se la richiesta viene accettata oppure perché la validazione la rifiuta. Nell’issue non sono indicati file di progetto o test.

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

Valutazione

Stack tecnologico
openapi, php
Ambito
api
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.