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:
339
test/e2e-cypress/static/documents/features/schema-form-core.yaml
Normal file
339
test/e2e-cypress/static/documents/features/schema-form-core.yaml
Normal 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
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user