summaryrefslogtreecommitdiff
path: root/test/unit/_known_hosts_real.exp
blob: 152cf8853a50ffa1808b70757f2d1397ade25e5b (plain)
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
proc setup {} {
    save_env
}; # setup()


proc teardown {} {
    assert_env_unmodified {
        /COMPREPLY=/d
        /OLDHOME=/d
    }
}; # teardown()


setup


set test "Hosts should be put in COMPREPLY"
set hosts [get_hosts]
    # Hosts `gee', `hus' and `jar' are defined in ./fixtures/_known_hosts_real/config
    # doo, ike, jub, 10.0.0.1, kyl and 100.0.0.2 in ./fixtures/_known_hosts_real/known_hosts
lappend hosts doo gee hus ike jar jub kyl 10.0.0.1 100.0.0.2
set cmd {unset COMPREPLY; _known_hosts_real -aF fixtures/_known_hosts_real/config ''; echo_array COMPREPLY}
assert_bash_list $hosts $cmd $test


sync_after_int


set test "Hosts should have username prefix and colon suffix"
set hosts [get_hosts]
    # Hosts `gee', `hus' and `jar' are defined in ./fixtures/_known_hosts_real/config
    # doo, ike jub, 10.0.0.1, kyl and 100.0.0.2 in ./fixtures/_known_hosts_real/known_hosts
lappend hosts doo gee hus ike jar jub kyl 10.0.0.1 100.0.0.2
set hosts [lsort -ascii $hosts]
set expected {}
foreach host $hosts {
    lappend expected "user@$host:"
}; # foreach
    # Call _known_hosts
set cmd {unset COMPREPLY; _known_hosts_real -acF fixtures/_known_hosts_real/config 'user@'; echo_array COMPREPLY}
assert_bash_list $expected $cmd $test


sync_after_int


set test "Files containing consecutive spaces should work"
set hosts [get_hosts]
set hosts_orig $hosts
    # Hosts `gee' and `hus' are defined in `./fixtures/_known_hosts_real/spaced  conf'
    # Host `two' is defined in ./fixtures/_known_hosts_real/known_hosts2
lappend hosts gee hus two
set hosts_config $hosts
    # Hosts `doo' and `ike' are defined in `./fixtures/_known_hosts_/spaced  known_hosts'
lappend hosts doo ike
set hosts        [join [bash_sort $hosts       ] "\\s+"]
set hosts_orig   [join [bash_sort $hosts_orig  ] "\\s+"]
set hosts_config [join [bash_sort $hosts_config] "\\s+"]
    # Call _known_hosts
set cmd {unset COMPREPLY; _known_hosts_real -aF 'fixtures/_known_hosts_real/spaced  conf' ''; echo_array COMPREPLY}
send "$cmd\r"
expect -ex "$cmd\r\n"
expect {
    -re "^$hosts\r\n/@$"  { pass "$test" }
    -re "^$hosts_orig\r\n/@$"  { fail "$test (config file)" }
    -re "^$hosts_config\r\n/@$"  { fail "$test (known hosts file)" }
    -re /@ { unresolved "$test at prompt" }
    default { unresolved "$test" }
}; # expect


sync_after_int


set test "Files starting with tilde (~) should work"
set hosts [get_hosts]
    # Host `two' is defined in ./fixtures/_known_hosts_real/known_hosts2
    # Host `three' is defined in ./fixtures/_known_hosts_real/known_hosts3
lappend hosts two three
set hosts [join [bash_sort $hosts] "\\s+"]
    # Setup environment
set cmd {OLDHOME=$HOME; HOME=$TESTDIR}
send "$cmd\r"
expect -ex "$cmd\r\n/@"
    # Call _known_hosts
set cmd {unset COMPREPLY; _known_hosts_real -aF fixtures/_known_hosts_real/config_tilde ''; echo_array COMPREPLY}
send "$cmd\r"
expect -ex "$cmd\r\n"
expect {
    -re "^$hosts\r\n/@$"  { pass "$test" }
    default { unresolved "$test" }
}; # expect
    # Teardown environment
set cmd {HOME=$OLDHOME}
send "$cmd\r"
expect -ex "$cmd\r\n/@"


sync_after_int


set test "Empty COMP_KNOWN_HOSTS_WITH_HOSTFILE should omit HOSTFILE"
assert_bash_exec "COMP_KNOWN_HOSTS_WITH_HOSTFILE="
set hosts [get_hosts_avahi]
    # Hosts `gee', `hus' and `jar' are defined in ./fixtures/_known_hosts_real/config
    # doo, ike, jub, 10.0.0.1, kyl and 100.0.0.2 in ./fixtures/_known_hosts_real/known_hosts
lappend hosts doo gee hus ike jar jub kyl 10.0.0.1 100.0.0.2
    # Call _known_hosts
set cmd {unset COMPREPLY; _known_hosts_real -aF fixtures/_known_hosts_real/config ''; echo_array COMPREPLY}
assert_bash_list $hosts $cmd $test
sync_after_int
assert_bash_exec "unset -v COMP_KNOWN_HOSTS_WITH_HOSTFILE"


sync_after_int


teardown