Ekapp/swagger/test/unit/plugins/validate-semantic/oas3/operations.js

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)
})
})
})