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

99 lines
2.8 KiB
Lua

local helpers = require "spec.helpers"
for _, strategy in helpers.each_strategy() do
-- TODO: replace these test cases with ones that assert the proper behavior
-- after the feature is removed
pending("external plugins and #wasm #" .. strategy, function()
describe("wasm enabled in conjunction with unused pluginservers", function()
it("does not prevent kong from starting", function()
require("kong.runloop.wasm").enable({
{ name = "tests",
path = helpers.test_conf.wasm_filters_path .. "/tests.wasm",
},
})
local bp = assert(helpers.get_db_utils(strategy, {
"services",
"routes",
"plugins",
"filter_chains",
}, { "response-transformer", "tests" }))
local route = assert(bp.routes:insert({
protocols = { "http" },
paths = { "/" },
service = assert(bp.services:insert({})),
}))
-- configure a wasm filter plugin
assert(bp.plugins:insert({
name = "tests",
route = route,
config = "",
}))
-- configure a lua plugin
assert(bp.plugins:insert({
name = "response-transformer",
route = route,
config = {
add = {
headers = {
"X-Lua-Plugin:hello from response-transformer",
},
},
},
}))
assert(helpers.start_kong({
nginx_conf = "spec/fixtures/custom_nginx.template",
database = strategy,
wasm = true,
wasm_filters = "tests",
plugins = "response-transformer",
-- this pluginserver does not exist, but we will validate that kong can
-- start so long as there are no configured/enabled plugins that will
-- require us to invoke it in any way
--
-- XXX: this configuration could be considered invalid, and future changes
-- to plugin resolution/pluginserver code MAY opt to change this behavior
pluginserver_names = "not-exists",
pluginserver_not_exists_start_cmd = "/i/do/not/exist",
pluginserver_not_exists_query_cmd = "/i/do/not/exist",
}))
local client
finally(function()
if client then
client:close()
end
helpers.stop_kong()
end)
client = helpers.proxy_client()
local res = client:get("/", {
headers = {
["X-PW-Test"] = "local_response",
["X-PW-Input"] = "hello from wasm",
},
})
-- verify that our wasm filter ran
local body = assert.res_status(200, res)
assert.equals("hello from wasm", body)
-- verify that our lua plugin (response-transformer) ran
local header = assert.response(res).has.header("X-Lua-Plugin")
assert.equals("hello from response-transformer", header)
end)
end)
end)
end -- each strategy