225 lines
6.7 KiB
Lua
225 lines
6.7 KiB
Lua
local match = require "luassert.match"
|
|
local pl_path = require "pl.path"
|
|
|
|
local admin_gui = require "kong.admin_gui"
|
|
local conf_loader = require "kong.conf_loader"
|
|
local log = require "kong.cmd.utils.log"
|
|
local prefix_handler = require "kong.cmd.utils.prefix_handler"
|
|
|
|
local helpers = require "spec.helpers"
|
|
|
|
describe("admin_gui template", function()
|
|
describe("admin_gui.generate_kconfig() - proxied", function()
|
|
local mock_prefix = "servroot"
|
|
|
|
local conf = {
|
|
prefix = mock_prefix,
|
|
admin_gui_url = "http://0.0.0.0:8002",
|
|
admin_gui_api_url = "https://admin-reference.kong-cloud.test",
|
|
admin_gui_path = '/manager',
|
|
admin_gui_listeners = {
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8002,
|
|
ssl = false,
|
|
},
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8445,
|
|
ssl = true,
|
|
},
|
|
},
|
|
admin_listeners = {
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8001,
|
|
ssl = false,
|
|
},
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8444,
|
|
ssl = true,
|
|
}
|
|
},
|
|
proxy_listeners = {
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8000,
|
|
ssl = false,
|
|
},
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8443,
|
|
ssl = true,
|
|
}
|
|
},
|
|
}
|
|
|
|
setup(function()
|
|
prefix_handler.prepare_prefixed_interface_dir("/usr/local/kong", "gui", conf)
|
|
os.execute("mkdir -p " .. mock_prefix)
|
|
assert(pl_path.isdir(mock_prefix))
|
|
end)
|
|
|
|
it("should generates the appropriate kconfig", function()
|
|
local kconfig_content = admin_gui.generate_kconfig(conf)
|
|
|
|
assert.matches("'ADMIN_GUI_PATH': '/manager'", kconfig_content, nil, true)
|
|
assert.matches("'ADMIN_API_URL': 'https://admin-reference.kong-cloud.test'", kconfig_content, nil, true)
|
|
assert.matches("'ADMIN_API_PORT': '8001'", kconfig_content, nil, true)
|
|
assert.matches("'ADMIN_API_SSL_PORT': '8444'", kconfig_content, nil, true)
|
|
end)
|
|
|
|
it("should regenerates the appropriate kconfig from another call", function()
|
|
local new_conf = conf
|
|
|
|
-- change configuration values
|
|
new_conf.admin_gui_url = 'http://admin-test.example.com'
|
|
new_conf.admin_gui_path = '/manager'
|
|
new_conf.admin_gui_api_url = 'http://localhost:8001'
|
|
|
|
-- regenerate kconfig
|
|
local new_content = admin_gui.generate_kconfig(new_conf)
|
|
|
|
-- test configuration values against template
|
|
assert.matches("'ADMIN_GUI_PATH': '/manager'", new_content, nil, true)
|
|
assert.matches("'ADMIN_API_URL': 'http://localhost:8001'", new_content, nil, true)
|
|
assert.matches("'ADMIN_API_PORT': '8001'", new_content, nil, true)
|
|
assert.matches("'ADMIN_API_SSL_PORT': '8444'", new_content, nil, true)
|
|
end)
|
|
end)
|
|
|
|
describe("admin_gui.generate_kconfig() - not proxied", function()
|
|
local mock_prefix = "servroot"
|
|
|
|
local conf = {
|
|
prefix = mock_prefix,
|
|
admin_gui_url = "http://0.0.0.0:8002",
|
|
admin_gui_api_url = "0.0.0.0:8001",
|
|
anonymous_reports = false,
|
|
admin_gui_listeners = {
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8002,
|
|
ssl = false,
|
|
},
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8445,
|
|
ssl = true,
|
|
},
|
|
},
|
|
admin_listeners = {
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8001,
|
|
ssl = false,
|
|
},
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8444,
|
|
ssl = true,
|
|
}
|
|
},
|
|
proxy_listeners = {
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8000,
|
|
ssl = false,
|
|
},
|
|
{
|
|
ip = "0.0.0.0",
|
|
port = 8443,
|
|
ssl = true,
|
|
}
|
|
},
|
|
}
|
|
|
|
setup(function()
|
|
prefix_handler.prepare_prefixed_interface_dir("/usr/local/kong", "gui", conf)
|
|
os.execute("mkdir -p " .. mock_prefix)
|
|
assert(pl_path.isdir(mock_prefix))
|
|
end)
|
|
|
|
it("should generates the appropriate kconfig", function()
|
|
local kconfig_content = admin_gui.generate_kconfig(conf)
|
|
|
|
assert.matches("'ADMIN_API_URL': '0.0.0.0:8001'", kconfig_content, nil, true)
|
|
assert.matches("'ADMIN_API_PORT': '8001'", kconfig_content, nil, true)
|
|
assert.matches("'ADMIN_API_SSL_PORT': '8444'", kconfig_content, nil, true)
|
|
assert.matches("'ANONYMOUS_REPORTS': 'false'", kconfig_content, nil, true)
|
|
end)
|
|
|
|
it("should regenerates the appropriate kconfig from another call", function()
|
|
local new_conf = conf
|
|
|
|
-- change configuration values
|
|
new_conf.admin_gui_url = 'http://admin-test.example.com'
|
|
new_conf.anonymous_reports = true
|
|
|
|
-- regenerate kconfig
|
|
local new_content = admin_gui.generate_kconfig(new_conf)
|
|
|
|
-- test configuration values against template
|
|
assert.matches("'ADMIN_API_URL': '0.0.0.0:8001'", new_content, nil, true)
|
|
assert.matches("'ADMIN_API_PORT': '8001'", new_content, nil, true)
|
|
assert.matches("'ADMIN_API_SSL_PORT': '8444'", new_content, nil, true)
|
|
assert.matches("'ANONYMOUS_REPORTS': 'true'", new_content, nil, true)
|
|
end)
|
|
end)
|
|
|
|
describe("prepare_admin() - message logs", function()
|
|
local conf = assert(conf_loader(helpers.test_conf_path))
|
|
|
|
local default_prefix = conf.prefix
|
|
local mock_prefix = "servroot_2"
|
|
local usr_path = "servroot"
|
|
local usr_interface_dir = "gui2"
|
|
local usr_interface_path = usr_path .. "/" .. usr_interface_dir
|
|
|
|
setup(function()
|
|
conf.prefix = mock_prefix
|
|
|
|
if not pl_path.exists(usr_interface_path) then
|
|
os.execute("mkdir -p " .. usr_interface_path)
|
|
end
|
|
end)
|
|
|
|
teardown(function()
|
|
if pl_path.exists(usr_interface_path) then
|
|
assert(pl_path.rmdir(usr_interface_path))
|
|
end
|
|
|
|
-- reset prefix
|
|
conf.prefix = default_prefix
|
|
end)
|
|
|
|
it("symlink creation should log out error", function()
|
|
local spy_log = spy.on(log, "warn")
|
|
|
|
finally(function()
|
|
log.warn:revert()
|
|
assert:unregister("matcher", "str_match")
|
|
end)
|
|
|
|
assert:register("matcher", "str_match", function (_state, arguments)
|
|
local expected = arguments[1]
|
|
return function(value)
|
|
return string.match(value, expected) ~= nil
|
|
end
|
|
end)
|
|
|
|
local coreutils_err_msg = "ln: failed to create symbolic link 'servroot_2/gui2': "
|
|
.. "No such file or directory\n"
|
|
|
|
local bsd_err_msg = "ln: servroot_2/gui2: No such file or directory\n"
|
|
|
|
prefix_handler.prepare_prefixed_interface_dir(usr_path, usr_interface_dir, conf)
|
|
assert.spy(spy_log).was_called(1)
|
|
assert.spy(spy_log).was_called_with(
|
|
match.is_any_of(match.str_match(coreutils_err_msg), match.str_match(bsd_err_msg))
|
|
)
|
|
end)
|
|
end)
|
|
end)
|