Added Swagger

This commit is contained in:
2020-06-10 08:25:21 +02:00
parent 5c6f37eaf7
commit af76cbca87
257 changed files with 48861 additions and 12 deletions
@@ -0,0 +1,128 @@
export const validateOAS3RefsForRequestBodiesReferenceRequestBodyPositions = () => sys => {
return sys.validateSelectors
.allOAS3RequestBodies()
.then(nodes => {
return nodes.reduce((acc, node) => {
const value = node.node
const ref = value.$ref
if (!ref) {
return acc
}
const [refPath = ""] = ref.split("#")
const pathArr = refPath.split("/") || []
// Ignore external references
if (ref.startsWith("#/")) {
// Local cases
if (refPath.endsWith("requestBody") && (refPath.startsWith("/paths") || refPath.startsWith("/components"))){
return acc
}
// Starting with #/compontents/schemas is not allowed
if (ref.startsWith("#/components/schemas")) {
acc.push({
level: "error",
message: `requestBody $refs cannot point to '#/components/schemas/…', they must point to '#/components/requestBodies/…'`,
path: [...node.path, "$ref"]
})
} else
if (ref.startsWith("#/components") && !ref.startsWith("#/components/requestBodies/")) {
acc.push({
level: "error",
message: `requestBody $refs must point to a position where a requestBody can be legally placed`,
path: [...node.path, "$ref"]
})
}
// Extensions are valid
if (ref.startsWith("#/") && pathArr.some(element => element.startsWith("x-"))){
return acc
}
}
return acc
}, [])
})
}
export const validateOAS3RequestBodyRefsReferenceAllowableSchemaPositions = () => sys => {
return sys.validateSelectors
.allOAS3RequestBodySchemas()
.then(nodes => {
return nodes.reduce((acc, node) => {
const value = node.node
const ref = value.$ref
if(!ref) {
return acc
}
const [, refPath = ""] = ref.split("#")
const pathArr = refPath.split("/") || []
const parentRefKey = pathArr.slice(-2)[0]
const targetRefKey = pathArr.slice(-1)[0]
if(
targetRefKey !== "schema"
&& parentRefKey !== "schemas"
&& ref.startsWith("#/")
) {
acc.push({
level: "error",
message: `requestBody schema $refs must point to a position where a Schema Object can be legally placed`,
path: [...node.path, "$ref"]
})
}
return acc
}, [])
})
}
export const validateOAS3ParameterRefsReferenceParameterPositions = () => sys => {
return sys.validateSelectors
.allParameters()
.then(nodes => {
return nodes.reduce((acc, node) => {
const value = node.node
const ref = value.$ref
if(!ref) {
return acc
}
if (ref.startsWith("#/components/headers")) {
acc.push({
level: "error",
message: `OAS3 parameter $refs should point to #/components/parameters/... and not #/components/headers/...`,
path: [...node.path, "$ref"]
})
}
return acc
}, [])
})
}
export const validateOAS3RefsForHeadersReferenceHeadersPositions = () => sys => {
return sys.validateSelectors
.allHeaders()
.then(nodes => {
return nodes.reduce((acc, node) => {
const value = node.node
const ref = value.$ref
if(!ref) {
return acc
}
if (ref.startsWith("#/components/parameters")) {
acc.push({
level: "error",
message: `OAS3 header $refs should point to #/components/headers/... and not #/components/parameters/...`,
path: [...node.path, "$ref"]
})
}
return acc
}, [])
})
}