File: install-linux_test_ensure_openssh_server.sh

package info (click to toggle)
opkssh 0.10.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,440 kB
  • sloc: sh: 2,062; makefile: 11
file content (168 lines) | stat: -rw-r--r-- 6,921 bytes parent folder | download | duplicates (3)
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