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

126 lines
3.3 KiB
Lua

local schema_def = require "kong.plugins.aws-lambda.schema"
local v = require("spec.helpers").validate_plugin_config_schema
describe("Plugin: AWS Lambda (schema)", function()
it("accepts nil Unhandled Response Status Code", function()
local ok, err = v({
unhandled_status = nil,
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.is_nil(err)
assert.truthy(ok)
end)
it("accepts correct Unhandled Response Status Code", function()
local ok, err = v({
unhandled_status = 412,
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.is_nil(err)
assert.truthy(ok)
end)
it("errors with Unhandled Response Status Code less than 100", function()
local ok, err = v({
unhandled_status = 99,
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.equal("value should be between 100 and 999", err.config.unhandled_status)
assert.falsy(ok)
end)
it("errors with Unhandled Response Status Code greater than 999", function()
local ok, err = v({
unhandled_status = 1000,
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.equal("value should be between 100 and 999", err.config.unhandled_status)
assert.falsy(ok)
end)
it("accepts with neither aws_key nor aws_secret", function()
local ok, err = v({
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.is_nil(err)
assert.truthy(ok)
end)
it("errors with aws_secret but without aws_key", function()
local ok, err = v({
aws_secret = "xx",
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.equal("all or none of these fields must be set: 'config.aws_key', 'config.aws_secret'", err["@entity"][1])
assert.falsy(ok)
end)
it("errors without aws_secret but with aws_key", function()
local ok, err = v({
aws_key = "xx",
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.equal("all or none of these fields must be set: 'config.aws_key', 'config.aws_secret'", err["@entity"][1])
assert.falsy(ok)
end)
it("errors with a non-http proxy_url", function()
for _, scheme in ipairs({"https", "ftp", "wss"}) do
local ok, err = v({
proxy_url = scheme .. "://squid:3128",
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.not_nil(err)
assert.falsy(ok)
assert.equals("proxy_url scheme must be http", err["@entity"][1])
end
end)
it("accepts a host", function()
local ok, err = v({
host = "my.lambda.host",
function_name = "my-function"
}, schema_def)
assert.is_nil(err)
assert.truthy(ok)
end)
it("does not error if none of aws_region and host are passed (tries to autodetect on runtime)", function()
local ok, err = v({
function_name = "my-function"
}, schema_def)
assert.is_nil(err)
assert.truthy(ok)
end)
it("allow both of aws_region and host to be passed", function()
local ok, err = v({
host = "my.lambda.host",
aws_region = "us-east-1",
function_name = "my-function"
}, schema_def)
assert.is_nil(err)
assert.truthy(ok)
end)
end)