1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
#!/bin/bash
export SHUNIT_RUNNING=1
# Source install-linux.sh
# shellcheck disable=SC1091
source "$(dirname "${BASH_SOURCE[0]}")/../install-linux.sh"
#
# Override functions for mocking
#
file_exists() {
[[ " ${mock_files[*]} " == *" $1 "* ]]
}
dir_exists() {
[[ " ${mock_dirs[*]} " == *" $1 "* ]]
}
rpm() {
if [[ "$1" == "-q" && "$2" == "openssh-server" ]]; then
return "$mock_rpm_result"
fi
return 1
}
dpkg() {
if [[ "$1" == "-l" && "$mock_dpkg_result" -eq 0 ]]; then
printf "ii openssh-server 1:9.2p1-2+deb12u6 amd64\n"
return 0
else
return 1
fi
}
pacman() {
if [[ "$1" == "-Q" && "$2" == "openssh" ]]; then
return "$mock_pacman_result"
fi
return 1
}
# Running tests
test_ensure_openssh_server_installed_suse() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_rpm_result=0 # Simulate rpm -q openssh-server success
output=$(ensure_openssh_server suse 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 0 when installed on suse" 0 $result
assertEquals "Expected ensure_openssh_server output to be empty on success" "" "$output"
}
test_ensure_openssh_server_not_installed_suse() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_rpm_result=1 # Simulate rpm -q openssh-server success
output=$(ensure_openssh_server suse 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 1 when not installed on suse" 1 $result
assertContains "Expected ensure_openssh_server to suggest zypper install on failure" "$output" "sudo zypper install openssh-server"
}
test_ensure_openssh_server_installed_redhat() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_rpm_result=0 # Simulate rpm -q openssh-server success
output=$(ensure_openssh_server redhat 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 0 when installed on redhat" 0 $result
assertEquals "Expected ensure_openssh_server output to be empty on success" "" "$output"
}
test_ensure_openssh_server_not_installed_redhat() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_rpm_result=1 # Simulate rpm -q openssh-server success
output=$(ensure_openssh_server redhat 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 1 when not installed on redhat" 1 $result
assertContains "Expected ensure_openssh_server output to suggest dnf install failure" "$output" "sudo dnf install openssh-server"
}
test_ensure_openssh_server_installed_arch() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_pacman_result=0
output=$(ensure_openssh_server arch 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 0 when installed on arch" 0 $result
assertEquals "Expected ensure_openssh_server output to be empty on success" "" "$output"
}
test_ensure_openssh_server_not_installed_arch() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_pacman_result=1
output=$(ensure_openssh_server arch 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 1 when not installed on arch" 1 $result
assertContains "Expected ensure_openssh_server output to suggest dnf install failure" "$output" "sudo pacman -S openssh"
}
test_ensure_openssh_server_installed_debian() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_dpkg_result=0
output=$(ensure_openssh_server debian 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 0 when installed on debian" 0 $result
assertEquals "Expected ensure_openssh_server output to be empty on success" "" "$output"
}
test_ensure_openssh_server_not_installed_debian() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_dpkg_result=1
output=$(ensure_openssh_server debian 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 1 when not installed on debian" 1 $result
assertContains "Expected ensure_openssh_server output to suggest dnf install failure" "$output" "sudo apt install openssh-server"
}
test_ensure_openssh_server_installed_suse_configd_missing_config_d_exits() {
mock_files=() # /etc/ssh/sshd_config not present
mock_dirs=("/etc/ssh/sshd_config.d") # /etc/ssh/sshd_config.d present
mock_rpm_result=0 # Simulate rpm -q openssh-server success
output=$(ensure_openssh_server suse 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 0 when configd file is missing but config.d folder exists" 0 $result
assertEquals "Expected ensure_openssh_server output to be empty on success" "" "$output"
}
test_ensure_openssh_server_installed_suse_configd_exists_config_d_missing() {
mock_files=("/etc/ssh/sshd_config") # /etc/ssh/sshd_config present
mock_dirs=() # /etc/ssh/sshd_config.d not present
mock_rpm_result=0 # Simulate rpm -q openssh-server success
output=$(ensure_openssh_server suse 2>&1)
result=$?
assertEquals "Expected ensure_openssh_server to return 0 when configd is present but config.d folder exists" 0 $result
assertEquals "Expected ensure_openssh_server output to be empty on success" "" "$output"
}
test_ensure_openssh_server_installed_suse_config_missing() {
mock_files=() # /etc/ssh/sshd_config not present
mock_dirs=() # /etc/ssh/sshd_config.d not present
mock_rpm_result=0 # Simulate rpm -q openssh-server success
output=$(ensure_openssh_server suse 2>&1)
result=$?
assertEquals "Expected to fail if both ssh config and config.d are missing" 1 "$result"
assertContains "Expected output missing config error" "$output" "Neither /etc/ssh/sshd_config nor /etc/ssh/sshd_config.d exists"
}
# shellcheck disable=SC1091
source shunit2
|