126 lines
3.3 KiB
Lua
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)
|