ft: JsonSchema components are now ImmutableJS compliant (#5952)

bug: JsonSchema components should validate schema properties exists
  - schema
  - type
  - format
  - enum
bug: fix a debounce error in JsonSchema_string if value is null
ft: new simplified JsonSchemaArrayItemText component
test: use immutableJS for `json-schema-form` test
test: add dev scripts to run `cypress open`
test: new cypress `schema-form` tests
This commit is contained in:
Tim Lai
2020-05-06 13:57:58 -07:00
committed by GitHub
parent b38203e21a
commit 5eb23cdd48
9 changed files with 1508 additions and 113 deletions

View File

@@ -0,0 +1,339 @@
openapi: 3.0.0
info:
title: "Schema in Parameters"
description: |-
This document has examples for examining the `schema` within a set of parameters
* String Enum (/pet/findByStatus)
* Array of Strings (/pet/findByTags)
* Array of Boolean (/petOwner/listOfServiceTrainer)
* Array of Objects (/petOwners/createWithList)
* Array of Enum (/petOwner/findByPreference)
This document also covers a debounce test for `schema` type `string
* String (/petOwner)
This documents does not cover:
* Array of Arrays
Additional notes
* Provides additional coverage and examples not covered in the Multiple Examples Core Document (Test)
* Code component reference `JsonSchemaForm`
* `pet` and `tag` schemas are reduced from Swagger Petstore
version: "1.0.0"
paths:
/pet/findByStatus:
get:
summary: Finds Pets by status
description: Multiple status values can be provided with comma separated strings
operationId: findPetsByStatus
parameters:
- name: status
in: query
description: Status values that need to be considered for filter
required: false
explode: true
schema:
type: string
enum:
- available
- pending
- sold
default: available
responses:
'200':
description: successful operation
content:
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
'400':
description: Invalid status value
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
/pet/findByTags:
get:
tags:
- pet
summary: Finds Pets by tags
description: >-
Multiple tags can be provided with comma separated strings. Use tag1,
tag2, tag3 for testing.
operationId: findPetsByTags
parameters:
- name: tags
in: query
description: Tags to filter by
required: false
explode: true
schema:
type: array
items:
type: string
responses:
'200':
description: successful operation
content:
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
'400':
description: Invalid tag value
security:
- petstore_auth:
- 'write:pets'
- 'read:pets'
'/petOwner/{petOwnerId}':
get:
tags:
- petOwner
summary: Find pet owner by ID
description: Returns a single pet owner if ID found, list if no ID provided
operationId: getPetOwnerById
parameters:
- name: petOwnerId
in: path
description: ID of pet owner to return
required: false
schema:
type: integer
format: int64
responses:
'200':
description: successful operation
content:
application/xml:
schema:
$ref: '#/components/schemas/PetOwner'
application/json:
schema:
$ref: '#/components/schemas/PetOwner'
'400':
description: Invalid ID supplied
'404':
description: Pet not found
/petOwner/listOfServiceTrainer:
get:
tags:
- petOwner
summary: List of Service Trainers
description: >-
Expect boolean, but allow both true and false
operationId: listOfServiceTrainer
parameters:
- name: tags
in: query
description: Boolean to filter by
required: false
explode: true
schema:
type: array
items:
type: boolean
responses:
'200':
description: successful operation
content:
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/PetOwner'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PetOwner'
'400':
description: Invalid tag value
/petOwner/findByPreference:
get:
tags:
- petOwner
summary: Find by Pet Owner Preferences
description: >-
Expect enum
operationId: findByPreference
parameters:
- name: tags
in: query
description: Enum to filter by
required: false
explode: true
schema:
type: array
items:
type: string
enum:
- dog
- cat
- bird
- fish
- other
default: dog
responses:
'200':
description: successful operation
content:
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/PetOwner'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PetOwner'
'400':
description: Invalid tag value
components:
/petOwner/createWithList:
post:
tags:
- petOwner
summary: Creates list of pet owners with given input array
operationId: petOwnerCreateWithList
requestBody:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PetOwner'
responses:
'200':
description: successful operation
content:
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/PetOwner'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PetOwner'
'400':
description: Invalid values
schemas:
Pet:
x-swagger-router-model: io.swagger.petstore.model.Pet
required:
- name
- photoUrls
properties:
id:
type: integer
format: int64
example: 10
name:
type: string
example: doggie
# remove category property
petOwners:
type: array
items:
$ref: '#/components/schemas/PetOwner'
photoUrls:
type: array
xml:
wrapped: true
items:
type: string
xml:
name: photoUrl
tags:
type: array
xml:
wrapped: true
items:
$ref: '#/components/schemas/Tag'
xml:
name: tag
status:
type: string
description: pet status in the store
enum:
- available
- pending
- sold
xml:
name: pet
type: object
# remove ApiResponse
PetOwner:
type: "object"
properties:
id:
type: "integer"
format: "int64"
example: 10
petId:
type: "integer"
format: "int64"
example: 201
petOwnerFirstName:
type: "string"
example: "John"
petOwnerLastName:
type: "string"
example: "Smith"
petOwnerContact:
type: "string"
example: "john.smith@fakeemail.co"
petOwnerStatus:
type: "integer"
format: "int32"
description: "Pet Owner Status"
example: 302
petOwnerPreferences:
type: "string"
description: "Pet Owner Preferred Pet Types"
enum:
- "dog"
- "cat"
- "bird"
- "fish"
- "other"
petOwnerServiceTrainer:
type: "boolean"
description: "Pet Onwer is Service Trainer"
default: false
Tag:
x-swagger-router-model: io.swagger.petstore.model.Tag
properties:
id:
type: integer
format: int64
name:
type: string
xml:
name: tag
type: object
requestBodies:
Pet:
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
application/xml:
schema:
$ref: '#/components/schemas/Pet'
description: Pet object that needs to be added to the store

View File

@@ -0,0 +1,119 @@
openapi: 3.0.0
info:
description: No type for schema
version: "1"
title: "No type"
paths:
/case-one-no-schema:
parameters:
- name: namespace
description: The custom resource's namespace
# schema:
in: path
required: true
get:
description: sf
responses:
default:
description: one
/case-one-no-type-or-format:
parameters:
- name: namespace
description: The custom resource's namespace
schema:
in: path
required: true
get:
description: sf
responses:
default:
description: one
/case-one-type-only-no-format:
parameters:
- name: namespace
description: The custom resource's namespace
schema:
type: integer
in: path
required: true
get:
description: sf
responses:
default:
description: one
/case-one-format-only-no-type:
parameters:
- name: namespace
description: The custom resource's namespace
schema:
format: int64
in: path
required: true
get:
description: sf
responses:
default:
description: one
/case-two-no-schema:
get:
description: sf
responses:
default:
description: one
parameters:
- name: namespace
in: path
description: The custom resource's namespace
required: true
# schema:
/case-two-no-type-or-format:
get:
description: sf
responses:
default:
description: one
parameters:
- name: namespace
in: path
description: The custom resource's namespace
required: true
schema:
/case-two-type-only-no-format:
get:
description: sf
responses:
default:
description: one
parameters:
- name: namespace
in: path
description: The custom resource's namespace
required: true
schema:
type: integer
/case-two-format-only-no-type:
get:
description: sf
responses:
default:
description: one
parameters:
- name: namespace
in: path
description: The custom resource's namespace
required: true
schema:
format: int64
/case-two-not-a-real-type:
get:
description: sf
responses:
default:
description: one
parameters:
- name: namespace
in: path
description: The custom resource's namespace
required: true
schema:
type: "NotARealType"