nuageinit: add update_sshd_config tests
This commit is contained in:
@@ -21,5 +21,6 @@ ${PACKAGE}FILES+= addfile.lua
|
|||||||
${PACKAGE}FILES+= decode_base64.lua
|
${PACKAGE}FILES+= decode_base64.lua
|
||||||
${PACKAGE}FILES+= addsudo.lua
|
${PACKAGE}FILES+= addsudo.lua
|
||||||
${PACKAGE}FILES+= adddoas.lua
|
${PACKAGE}FILES+= adddoas.lua
|
||||||
|
${PACKAGE}FILES+= update_sshd_config.lua
|
||||||
|
|
||||||
.include <bsd.test.mk>
|
.include <bsd.test.mk>
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ atf_test_case addfile
|
|||||||
atf_test_case decode_base64
|
atf_test_case decode_base64
|
||||||
atf_test_case addsudo
|
atf_test_case addsudo
|
||||||
atf_test_case adddoas
|
atf_test_case adddoas
|
||||||
|
atf_test_case update_sshd_config
|
||||||
|
|
||||||
settimezone_body()
|
settimezone_body()
|
||||||
{
|
{
|
||||||
@@ -109,6 +110,12 @@ adddoas_body()
|
|||||||
atf_check /usr/libexec/flua $(atf_get_srcdir)/adddoas.lua
|
atf_check /usr/libexec/flua $(atf_get_srcdir)/adddoas.lua
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_sshd_config_body()
|
||||||
|
{
|
||||||
|
mkdir -p etc/ssh
|
||||||
|
atf_check /usr/libexec/flua $(atf_get_srcdir)/update_sshd_config.lua
|
||||||
|
}
|
||||||
|
|
||||||
atf_init_test_cases()
|
atf_init_test_cases()
|
||||||
{
|
{
|
||||||
atf_add_test_case sethostname
|
atf_add_test_case sethostname
|
||||||
@@ -120,4 +127,5 @@ atf_init_test_cases()
|
|||||||
atf_add_test_case decode_base64
|
atf_add_test_case decode_base64
|
||||||
atf_add_test_case addsudo
|
atf_add_test_case addsudo
|
||||||
atf_add_test_case adddoas
|
atf_add_test_case adddoas
|
||||||
|
atf_add_test_case update_sshd_config
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
#!/usr/libexec/flua
|
||||||
|
---
|
||||||
|
-- SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2026 Baptiste Daroussin <bapt@FreeBSD.org>
|
||||||
|
|
||||||
|
local n = require("nuage")
|
||||||
|
|
||||||
|
local root = os.getenv("NUAGE_FAKE_ROOTDIR")
|
||||||
|
if not root then
|
||||||
|
root = ""
|
||||||
|
end
|
||||||
|
|
||||||
|
local sshd_config = root .. "/etc/ssh/sshd_config"
|
||||||
|
|
||||||
|
local function setup(content)
|
||||||
|
local dir = root .. "/etc/ssh"
|
||||||
|
n.mkdir_p(dir)
|
||||||
|
local f = assert(io.open(sshd_config, "w"))
|
||||||
|
f:write(content)
|
||||||
|
f:close()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function read_config()
|
||||||
|
local f = assert(io.open(sshd_config, "r"))
|
||||||
|
local content = f:read("*a")
|
||||||
|
f:close()
|
||||||
|
return content
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Key not found: appended
|
||||||
|
setup("SomeOtherKey yes\n")
|
||||||
|
n.update_sshd_config("PasswordAuthentication", "yes")
|
||||||
|
if read_config() ~= "SomeOtherKey yes\nPasswordAuthentication yes\n" then
|
||||||
|
n.err("Key not found: should be appended")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Key with same value: no change
|
||||||
|
setup("PasswordAuthentication yes\n")
|
||||||
|
n.update_sshd_config("PasswordAuthentication", "yes")
|
||||||
|
if read_config() ~= "PasswordAuthentication yes\n" then
|
||||||
|
n.err("Same value: should not change")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Key with different value: changed
|
||||||
|
setup("PasswordAuthentication no\n")
|
||||||
|
n.update_sshd_config("PasswordAuthentication", "yes")
|
||||||
|
if read_config() ~= "PasswordAuthentication yes\n" then
|
||||||
|
n.err("Different value: should change")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Key with comment
|
||||||
|
setup("PasswordAuthentication no # keep this\n")
|
||||||
|
n.update_sshd_config("PasswordAuthentication", "yes")
|
||||||
|
if read_config() ~= "PasswordAuthentication yes\n" then
|
||||||
|
n.err("Comment stripped: '" .. read_config() .. "'")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Case insensitive key matching
|
||||||
|
setup("passwordauthentication no\n")
|
||||||
|
n.update_sshd_config("PasswordAuthentication", "yes")
|
||||||
|
if read_config() ~= "PasswordAuthentication yes\n" then
|
||||||
|
n.err("Case insensitive matching failed")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Extra spaces
|
||||||
|
setup(" PasswordAuthentication no \n")
|
||||||
|
n.update_sshd_config("PasswordAuthentication", "yes")
|
||||||
|
if read_config() ~= "PasswordAuthentication yes\n" then
|
||||||
|
n.err("Extra spaces handling failed: '" .. read_config() .. "'")
|
||||||
|
end
|
||||||
|
|
||||||
|
os.exit(0)
|
||||||
Reference in New Issue
Block a user