Files
kong--kong/spec/02-integration/17-admin_gui/01-admin-gui-path_spec.lua
T
2026-07-13 12:32:21 +08:00

122 lines
3.2 KiB
Lua

local lfs = require "lfs"
local pl_path = require "pl.path"
local helpers = require "spec.helpers"
local test_prefix = helpers.test_conf.prefix
local shell = require "resty.shell"
local _
describe("Admin GUI - admin_gui_path", function()
local client
after_each(function()
helpers.stop_kong()
if client then
client:close()
end
end)
it("should serve Admin GUI correctly when admin_gui_path is unset", function()
assert(helpers.start_kong({
database = "off",
admin_gui_listen = "127.0.0.1:9002",
}))
client = assert(helpers.admin_gui_client(nil, 9002))
local err, gui_dir_path, gui_index_file_path
gui_dir_path = pl_path.join(test_prefix, "gui")
shell.run("rm -rf " .. gui_dir_path, nil, 0)
_, err = lfs.mkdir(gui_dir_path)
assert.is_nil(err)
gui_index_file_path = pl_path.join(gui_dir_path, "index.html")
local gui_index_file
gui_index_file, err = io.open(gui_index_file_path, "w+")
assert.is_nil(err)
gui_index_file:write("TEST INDEX.HTML = /__km_base__/assets/image.png")
gui_index_file:close()
local res = assert(client:send {
method = "GET",
path = "/",
})
res = assert.res_status(200, res)
assert.matches("TEST INDEX%.HTML = /assets/image%.png", res)
client:close()
res = assert(client:send {
method = "GET",
path = "/kconfig.js",
})
res = assert.res_status(200, res)
assert.matches("'ADMIN_GUI_PATH': '/'", res, nil, true)
end)
it("should serve Admin GUI correctly when admin_gui_path is set", function()
assert(helpers.start_kong({
database = "off",
admin_gui_listen = "127.0.0.1:9002",
admin_gui_path = "/manager",
}))
client = assert(helpers.admin_gui_client(nil, 9002))
local err, gui_dir_path, gui_index_file_path
gui_dir_path = pl_path.join(test_prefix, "gui")
shell.run("rm -rf " .. gui_dir_path, nil, 0)
_, err = lfs.mkdir(gui_dir_path)
assert.is_nil(err)
gui_index_file_path = pl_path.join(gui_dir_path, "index.html")
local gui_index_file
gui_index_file, err = io.open(gui_index_file_path, "w+")
assert.is_nil(err)
gui_index_file:write("TEST INDEX.HTML = /__km_base__/assets/image.png")
gui_index_file:close()
local res = assert(client:send {
method = "GET",
path = "/",
})
assert.res_status(404, res)
client:close()
res = assert(client:send {
method = "GET",
path = "/any_other_test_path",
})
assert.res_status(404, res)
client:close()
res = assert(client:send {
method = "GET",
path = "/manager",
})
res = assert.res_status(200, res)
assert.matches("TEST INDEX%.HTML = /manager/assets/image%.png", res)
client:close()
res = assert(client:send {
method = "GET",
path = "/kconfig.js",
})
assert.res_status(404, res)
client:close()
res = assert(client:send {
method = "GET",
path = "/any_other_test_path/kconfig.js",
})
assert.res_status(404, res)
client:close()
res = assert(client:send {
method = "GET",
path = "/manager/kconfig.js",
})
res = assert.res_status(200, res)
assert.matches("'ADMIN_GUI_PATH': '/manager'", res, nil, true)
end)
end)