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

166 lines
4.8 KiB
JavaScript

import expect from "expect"
import validateHelper, { expectNoErrorsOrWarnings } from "../validate-helper.js"
describe("validation plugin - semantic - oas3 parameters", () => {
describe("Header parameters should not be named Authorization, Content-Type, or Accept", () => {
it("should return a warning when a header parameter named Authorization is defined in an operation", () => {
const spec = {
openapi: "3.0.0",
paths: {
"/": {
get: {
parameters: [
{
in: "header",
name: "authorization"
}
]
}
}
}
}
return validateHelper(spec)
.then(system => {
const allErrors = system.errSelectors.allErrors().toJS()
const firstError = allErrors[0]
expect(allErrors.length).toEqual(1)
expect(firstError.message).toMatch(`Header parameters named "Authorization" are ignored.`)
expect(firstError.path).toEqual(["paths", "/", "get", "parameters", "0", "name"])
})
})
it("should return a warning when a header parameter named Content-Type is defined in an operation", () => {
const spec = {
openapi: "3.0.0",
paths: {
"/": {
get: {
parameters: [
{
in: "header",
name: "content-type"
}
]
}
}
}
}
return validateHelper(spec)
.then(system => {
const allErrors = system.errSelectors.allErrors().toJS()
const firstError = allErrors[0]
expect(allErrors.length).toEqual(1)
expect(firstError.message).toMatch(`Header parameters named "Content-Type" are ignored.`)
expect(firstError.path).toEqual(["paths", "/", "get", "parameters", "0", "name"])
})
})
it("should return a warning when a header parameter named Accept is defined in an operation", () => {
const spec = {
openapi: "3.0.0",
paths: {
"/": {
get: {
parameters: [
{
in: "header",
name: "accept"
}
]
}
}
}
}
return validateHelper(spec)
.then(system => {
const allErrors = system.errSelectors.allErrors().toJS()
const firstError = allErrors[0]
expect(allErrors.length).toEqual(1)
expect(firstError.message).toMatch(`Header parameters named "Accept" are ignored.`)
expect(firstError.path).toEqual(["paths", "/", "get", "parameters", "0", "name"])
})
})
it("should return a warning when a header parameter named Authorization is defined in components", () => {
const spec = {
openapi: "3.0.0",
components: {
parameters: {
auth: {
in: "header",
name: "authorization"
}
}
}
}
return validateHelper(spec)
.then(system => {
const allErrors = system.errSelectors.allErrors().toJS()
const firstError = allErrors[0]
expect(allErrors.length).toEqual(1)
expect(firstError.message).toMatch(`Header parameters named "Authorization" are ignored.`)
expect(firstError.path).toEqual(["components", "parameters", "auth", "name"])
})
})
it("should return no warnings when a non-header parameter is named Authorization", () => {
const spec = {
openapi: "3.0.0",
paths: {
"/": {
get: {
parameters: [
{
in: "query",
name: "authorization"
}
]
}
}
}
}
return expectNoErrorsOrWarnings(spec)
})
it("should return no warnings when a header parameter name contains 'Authorization' as a substring", () => {
const spec = {
openapi: "3.0.0",
paths: {
"/": {
get: {
parameters: [
{
in: "header",
name: "X-Authorization"
}
]
}
}
}
}
return expectNoErrorsOrWarnings(spec)
})
it("should return no warnings when a header parameter is named 'Authorization' in OpenAPI 2.0", () => {
const spec = {
swagger: "2.0",
paths: {
"/": {
get: {
parameters: [
{
in: "header",
name: "authorization"
}
]
}
}
}
}
return expectNoErrorsOrWarnings(spec)
})
})
})