Files
kong--kong/spec/01-unit/30-standardized_redis_config_spec.lua
2026-07-13 12:32:21 +08:00

107 lines
2.7 KiB
Lua

local schema_def = require "spec.fixtures.custom_plugins.kong.plugins.redis-dummy.schema"
local v = require("spec.helpers").validate_plugin_config_schema
describe("Validate standardized redis config schema", function()
describe("valid config", function()
it("accepts minimal redis config (populates defaults)", function()
local config = {
redis = {
host = "localhost"
}
}
local ok, err = v(config, schema_def)
assert.truthy(ok)
assert.same({
host = "localhost",
port = 6379,
timeout = 2000,
username = ngx.null,
password = ngx.null,
database = 0,
ssl = false,
ssl_verify = false,
server_name = ngx.null,
}, ok.config.redis)
assert.is_nil(err)
end)
it("full redis config", function()
local config = {
redis = {
host = "localhost",
port = 9900,
timeout = 3333,
username = "test",
password = "testXXX",
database = 5,
ssl = true,
ssl_verify = true,
server_name = "example.test"
}
}
local ok, err = v(config, schema_def)
assert.truthy(ok)
assert.same(config.redis, ok.config.redis)
assert.is_nil(err)
end)
it("allows empty strings on password", function()
local config = {
redis = {
host = "localhost",
password = "",
}
}
local ok, err = v(config, schema_def)
assert.truthy(ok)
assert.same({
host = "localhost",
port = 6379,
timeout = 2000,
username = ngx.null,
password = "",
database = 0,
ssl = false,
ssl_verify = false,
server_name = ngx.null,
}, ok.config.redis)
assert.is_nil(err)
end)
end)
describe("invalid config", function()
it("rejects invalid config", function()
local config = {
redis = {
host = "",
port = -5,
timeout = -5,
username = 1,
password = 4,
database = "abc",
ssl = "abc",
ssl_verify = "xyz",
server_name = "test-test"
}
}
local ok, err = v(config, schema_def)
assert.falsy(ok)
assert.same({
config = {
redis = {
database = 'expected an integer',
host = 'length must be at least 1',
password = 'expected a string',
port = 'value should be between 0 and 65535',
ssl = 'expected a boolean',
ssl_verify = 'expected a boolean',
timeout = 'value should be between 0 and 2147483646',
username = 'expected a string',
}
}
}, err)
end)
end)
end)