kong/spec/03-plugins/14-request-termination/01-schema_spec.lua (61 lines of code) (raw):
local schema_def = require "kong.plugins.request-termination.schema"
local v = require("spec.helpers").validate_plugin_config_schema
describe("Plugin: request-termination (schema)", function()
it("should accept a valid status_code", function()
assert(v({status_code = 404}, schema_def))
end)
it("should accept a valid message", function()
assert(v({message = "Not found"}, schema_def))
end)
it("should accept a valid content_type", function()
assert(v({content_type = "text/html",body = "<body><h1>Not found</h1>"}, schema_def))
end)
it("should accept a valid body", function()
assert(v({body = "<body><h1>Not found</h1>"}, schema_def))
end)
it("should accept trigger", function()
assert(v({ echo = true, trigger = "header_name" }, schema_def))
end)
describe("errors", function()
it("status_code should only accept numbers", function()
local ok, err = v({status_code = "abcd"}, schema_def)
assert.falsy(ok)
assert.same("expected an integer", err.config.status_code)
end)
it("status_code < 100", function()
local ok, err = v({status_code = 99}, schema_def)
assert.falsy(ok)
assert.same("value should be between 100 and 599", err.config.status_code)
end)
it("status_code > 599", function()
local ok,err = v({status_code = 600}, schema_def)
assert.falsy(ok)
assert.same("value should be between 100 and 599", err.config.status_code)
end)
it("#message with body", function()
local ok, err = v({message = "error", body = "test"}, schema_def)
assert.falsy(ok)
assert.same("message cannot be used with content_type or body", err.config)
end)
it("message with body and content_type", function()
local ok, err = v({message = "error", content_type="text/html", body = "test"}, schema_def)
assert.falsy(ok)
assert.same("message cannot be used with content_type or body", err.config)
end)
it("message with content_type", function()
local ok, err = v({message = "error", content_type="text/html"}, schema_def)
assert.falsy(ok)
assert.same("message cannot be used with content_type or body", err.config)
end)
it("content_type without body", function()
local ok, err = v({content_type="text/html"}, schema_def)
assert.falsy(ok)
assert.same("content_type requires a body", err.config)
end)
it("echo with body & content_type", function()
local ok, err = v({echo = true, content_type = "text/html",body = "<body><h1>Not found</h1>"}, schema_def)
assert.falsy(ok)
assert.same("echo cannot be used with content_type and body", err.config)
end)
end)
end)