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

146 lines
3.4 KiB
Lua

local helpers = require "spec.helpers"
local ADMIN_HEADERS = {
["Content-Type"] = "application/json",
}
local function make_requests(proxy_client, suffix)
local res = proxy_client:get("/", {
query = {
reference = "{vault://secrets/test}"
}
})
assert.response(res).has.status(200)
local json = assert.response(res).has.jsonbody()
assert.same({
prefix = "prefix",
suffix = suffix,
resource = "test",
}, json)
local res = proxy_client:get("/", {
query = {
reference = "{vault://secrets/test?prefix=prefix-new}"
}
})
assert.response(res).has.status(200)
local json = assert.response(res).has.jsonbody()
assert.same({
prefix = "prefix-new",
suffix = suffix,
resource = "test",
}, json)
local res = proxy_client:get("/", {
query = {
reference = "{vault://secrets/test}"
}
})
assert.response(res).has.status(200)
local json = assert.response(res).has.jsonbody()
assert.same({
prefix = "prefix",
suffix = suffix,
resource = "test",
}, json)
local res = proxy_client:get("/", {
query = {
reference = "{vault://secrets/test#1}"
}
})
assert.response(res).has.status(200)
local json = assert.response(res).has.jsonbody()
assert.same({
prefix = "prefix",
suffix = suffix,
resource = "test",
version = 1,
}, json)
end
for _, strategy in helpers.each_strategy({ "postgres" }) do
describe("Vault configuration #" .. strategy, function()
local admin_client
local proxy_client
lazy_setup(function()
local bp = helpers.get_db_utils(strategy, { "vaults" }, { "secret-response" }, { "echo" })
local route = bp.routes:insert {
paths = { "/" },
}
bp.plugins:insert {
name = "secret-response",
route = { id = route.id },
}
assert(helpers.start_kong {
database = strategy,
prefix = helpers.test_conf.prefix,
nginx_conf = "spec/fixtures/custom_nginx.template",
plugins = "secret-response",
vaults = "echo",
})
end)
before_each(function()
admin_client = assert(helpers.admin_client())
proxy_client = assert(helpers.proxy_client())
end)
after_each(function()
if admin_client then
admin_client:close()
end
if proxy_client then
proxy_client:close()
end
end)
lazy_teardown(function()
helpers.stop_kong()
end)
it("is not sticky (caches are properly cleared / new cache keys properly generated) ", function()
-- Create Vault:
local res = admin_client:put("/vaults/secrets", {
body = {
name = "echo",
config = {
prefix = "prefix",
suffix = "suffix",
},
},
headers = ADMIN_HEADERS,
})
assert.response(res).has.status(200)
assert.eventually(function()
-- Check Output:
make_requests(proxy_client, "suffix")
end).has_no_error("The vault configuration is not sticky")
-- Patch Vault:
local res = admin_client:patch("/vaults/secrets", {
body = {
config = {
suffix = "suffix-new",
},
},
headers = ADMIN_HEADERS,
})
assert.response(res).has.status(200)
assert.eventually(function()
-- Check Output:
make_requests(proxy_client, "suffix-new")
end).has_no_error("The vault configuration is not sticky")
end)
end)
end