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

172 lines
5.1 KiB
Lua

local helpers = require "spec.helpers"
for _, strategy in helpers.all_strategies() do
describe("kong vault #" .. strategy, function()
lazy_setup(function()
helpers.get_db_utils(nil, {}) -- runs migrations
end)
lazy_teardown(function()
helpers.clean_prefix()
end)
it("vault help", function()
local ok, stderr, stdout = helpers.kong_exec("vault --help", {
prefix = helpers.test_conf.prefix,
})
assert.matches("Usage: kong vault COMMAND [OPTIONS]", stderr, nil, true)
assert.is_nil(stdout)
assert.is_false(ok)
end)
it("vault get without params", function()
local ok, stderr, stdout = helpers.kong_exec("vault get", {
prefix = helpers.test_conf.prefix,
})
assert.matches("Error: the 'get' command needs a <reference> argument", stderr)
assert.is_nil(stdout)
assert.is_false(ok)
end)
it("vault get with non-existing vault", function()
local ok, stderr, stdout = helpers.kong_exec("vault get none/foo", {
prefix = helpers.test_conf.prefix,
})
assert.matches("Error: could not find vault (none)", stderr, nil, true)
assert.is_nil(stdout)
assert.is_false(ok)
end)
it("vault get with non-existing key", function()
local ok, stderr, stdout = helpers.kong_exec("vault get env/none", {
prefix = helpers.test_conf.prefix,
})
assert.matches("could not get value from external vault", stderr, nil, true)
assert.is_nil(stdout)
assert.is_false(ok)
end)
describe("[env] uninstantiated secrets", function()
it("vault get env", function()
finally(function()
helpers.unsetenv("SECRETS_TEST")
end)
helpers.setenv("SECRETS_TEST", "testvalue")
local ok, stderr, stdout = helpers.kong_exec("vault get env/secrets_test", {
prefix = helpers.test_conf.prefix,
})
assert.equal("", stderr)
assert.matches("testvalue", stdout, nil, true)
assert.is_true(ok)
ok, stderr, stdout = helpers.kong_exec("vault get env/secrets-test", {
prefix = helpers.test_conf.prefix,
})
assert.equal("", stderr)
assert.matches("testvalue", stdout, nil, true)
assert.is_true(ok)
end)
it("vault get env with config", function()
finally(function()
helpers.unsetenv("KONG_VAULT_ENV_PREFIX")
helpers.unsetenv("SECRETS_TEST")
end)
helpers.setenv("KONG_VAULT_ENV_PREFIX", "SECRETS_")
helpers.setenv("SECRETS_TEST", "testvalue-with-config")
local ok, stderr, stdout = helpers.kong_exec("vault get env/test", {
prefix = helpers.test_conf.prefix,
})
assert.equal("", stderr)
assert.matches("testvalue-with-config", stdout, nil, true)
assert.is_true(ok)
end)
it("vault get env with config with dash", function()
finally(function()
helpers.unsetenv("KONG_VAULT_ENV_PREFIX")
helpers.unsetenv("SECRETS_AGAIN_TEST")
end)
helpers.setenv("KONG_VAULT_ENV_PREFIX", "SECRETS-AGAIN-")
helpers.setenv("SECRETS_AGAIN_TEST_TOO", "testvalue-with-config-again")
local ok, stderr, stdout = helpers.kong_exec("vault get env/test-too", {
prefix = helpers.test_conf.prefix,
})
assert.equal("", stderr)
assert.matches("testvalue-with-config-again", stdout, nil, true)
assert.is_true(ok)
end)
end)
describe("[env] instantiated #" .. strategy, function()
local db, _, yaml_file
lazy_setup(function()
_, db = helpers.get_db_utils(strategy, {
"vaults"
})
db.vaults:insert {
prefix = "test-env",
name = "env",
config = {
prefix = "SECRETS_",
}
}
yaml_file = helpers.make_yaml_file([[
_format_version: "3.0"
vaults:
- config:
prefix: SECRETS_
name: env
prefix: test-env
]])
assert(helpers.start_kong({
database = strategy,
nginx_conf = "spec/fixtures/custom_nginx.template",
declarative_config = yaml_file,
}))
end)
lazy_teardown(function()
helpers.stop_kong()
end)
it("vault get env", function()
finally(function()
helpers.unsetenv("SECRETS_TEST")
end)
helpers.setenv("SECRETS_TEST", "testvalue")
ngx.sleep(3)
local ok, stderr, stdout = helpers.kong_exec("vault get test-env/test", {
prefix = helpers.test_conf.prefix,
})
assert.equal("", stderr)
assert.matches("testvalue", stdout)
assert.is_true(ok)
end)
it("vault get non-existing env", function()
local ok, stderr, stdout = helpers.kong_exec("vault get test-env/nonexist", {
prefix = helpers.test_conf.prefix,
})
assert.matches("could not get value from external vault", stderr, nil, true)
assert.is_nil(stdout)
assert.is_false(ok)
end)
it("vault get non-existing vault", function()
local ok, stderr, stdout = helpers.kong_exec("vault get nonexist/nonexist", {
prefix = helpers.test_conf.prefix,
})
assert.matches("could not find vault (nonexist)", stderr, nil, true)
assert.is_nil(stdout)
assert.is_false(ok)
end)
end)
end)
end