Files
2026-07-13 12:32:21 +08:00

141 lines
2.8 KiB
Lua

local PLUGIN_NAME = "standard-webhooks"
-- helper function to validate data against a schema
local validate do
local validate_entity = require("spec.helpers").validate_plugin_config_schema
local plugin_schema = require("kong.plugins."..PLUGIN_NAME..".schema")
function validate(data)
return validate_entity(data, plugin_schema)
end
end
describe(PLUGIN_NAME .. ": (schema)", function()
it("accepts a valid config", function()
local ok, err = validate({
secret_v1 = "abc123",
tolerance_second = 5*60,
})
assert.is_nil(err)
assert.is_truthy(ok)
end)
describe("secret", function()
it("must be set", function()
local ok, err = validate({
secret_v1 = nil,
tolerance_second = 5*60,
})
assert.is_same({
["config"] = {
["secret_v1"] = 'required field missing',
}
}, err)
assert.is_falsy(ok)
end)
it("is not nullable", function()
local ok, err = validate({
secret_v1 = assert(ngx.null),
tolerance_second = 5*60,
})
assert.is_same({
["config"] = {
["secret_v1"] = 'required field missing',
}
}, err)
assert.is_falsy(ok)
end)
it("must be a string", function()
local ok, err = validate({
secret_v1 = 123,
tolerance_second = 5*60,
})
assert.is_same({
["config"] = {
["secret_v1"] = 'expected a string',
}
}, err)
assert.is_falsy(ok)
end)
end)
describe("tolerance_second", function()
it("gets a default", function()
local ok, err = validate({
secret_v1 = "abc123",
tolerance_second = nil,
})
assert.is_nil(err)
assert.are.same(ok.config, {
secret_v1 = "abc123",
tolerance_second = 5*60,
})
end)
it("is not nullable", function()
local ok, err = validate({
secret_v1 = "abc123",
tolerance_second = assert(ngx.null),
})
assert.is_same({
["config"] = {
["tolerance_second"] = 'required field missing',
}
}, err)
assert.is_falsy(ok)
end)
it("must be an integer", function()
local ok, err = validate({
secret_v1 = "abc123",
tolerance_second = 5.67,
})
assert.is_same({
["config"] = {
["tolerance_second"] = 'expected an integer',
}
}, err)
assert.is_falsy(ok)
end)
it("must be >= 0", function()
local ok, err = validate({
secret_v1 = "abc123",
tolerance_second = -1,
})
assert.is_same({
["config"] = {
["tolerance_second"] = 'value must be greater than -1',
}
}, err)
assert.is_falsy(ok)
end)
end)
end)