92 lines
2.6 KiB
JavaScript
92 lines
2.6 KiB
JavaScript
|
import expect from "expect"
|
||
|
|
||
|
import validateHelper, { expectNoErrors } from "../validate-helper.js"
|
||
|
|
||
|
describe("validation plugin - semantic - oas3 operations", () => {
|
||
|
describe("GET and DELETE operations may not have a requestBody", () => {
|
||
|
it("should return an error when a requestBody exists in a GET operation", () => {
|
||
|
const spec = {
|
||
|
openapi: "3.0.0",
|
||
|
paths: {
|
||
|
"/": {
|
||
|
get: {
|
||
|
operationId: "myId",
|
||
|
requestBody: {
|
||
|
content: {
|
||
|
"application/json": {
|
||
|
schema: {
|
||
|
type: "string"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return validateHelper(spec)
|
||
|
.then(system => {
|
||
|
const allErrors = system.errSelectors.allErrors().toJS()
|
||
|
const firstError = allErrors[0]
|
||
|
expect(allErrors.length).toEqual(1)
|
||
|
expect(firstError.message).toEqual(`GET operations cannot have a requestBody.`)
|
||
|
expect(firstError.path).toEqual(["paths", "/", "get", "requestBody"])
|
||
|
})
|
||
|
})
|
||
|
it("should return an error when a requestBody exists in a DELETE operation", () => {
|
||
|
const spec = {
|
||
|
openapi: "3.0.0",
|
||
|
paths: {
|
||
|
"/": {
|
||
|
delete: {
|
||
|
operationId: "myId",
|
||
|
requestBody: {
|
||
|
content: {
|
||
|
"application/json": {
|
||
|
schema: {
|
||
|
type: "string"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return validateHelper(spec)
|
||
|
.then(system => {
|
||
|
const allErrors = system.errSelectors.allErrors().toJS()
|
||
|
const firstError = allErrors[0]
|
||
|
expect(allErrors.length).toEqual(1)
|
||
|
expect(firstError.message).toEqual(`DELETE operations cannot have a requestBody.`)
|
||
|
expect(firstError.path).toEqual(["paths", "/", "delete", "requestBody"])
|
||
|
})
|
||
|
})
|
||
|
it("should not return an error when other methods contain a requestBody", () => {
|
||
|
const spec = {
|
||
|
openapi: "3.0.0",
|
||
|
paths: {
|
||
|
"/": {
|
||
|
post: {
|
||
|
operationId: "myId",
|
||
|
requestBody: {
|
||
|
content: {
|
||
|
"application/json": {
|
||
|
schema: {
|
||
|
type: "string"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return expectNoErrors(spec)
|
||
|
})
|
||
|
})
|
||
|
})
|