xref: /openbsd-src/regress/usr.bin/ssh/sshcfgparse.sh (revision 85d93225d7647ba6b2633a061c6ac89bbd9e78b8)
1#	$OpenBSD: sshcfgparse.sh,v 1.3 2018/04/06 04:18:35 dtucker Exp $
2#	Placed in the Public Domain.
3
4tid="ssh config parse"
5
6verbose "reparse minimal config"
7(${SSH} -G -F $OBJ/ssh_config somehost >$OBJ/ssh_config.1 &&
8 ${SSH} -G -F $OBJ/ssh_config.1 somehost >$OBJ/ssh_config.2 &&
9 diff $OBJ/ssh_config.1 $OBJ/ssh_config.2) || fail "reparse minimal config"
10
11verbose "ssh -W opts"
12f=`${SSH} -GF $OBJ/ssh_config host | awk '/exitonforwardfailure/{print $2}'`
13test "$f" = "no" || fail "exitonforwardfailure default"
14f=`${SSH} -GF $OBJ/ssh_config -W a:1 h | awk '/exitonforwardfailure/{print $2}'`
15test "$f" = "yes" || fail "exitonforwardfailure enable"
16f=`${SSH} -GF $OBJ/ssh_config -W a:1 -o exitonforwardfailure=no h | \
17    awk '/exitonforwardfailure/{print $2}'`
18test "$f" = "no" || fail "exitonforwardfailure override"
19
20f=`${SSH} -GF $OBJ/ssh_config host | awk '/clearallforwardings/{print $2}'`
21test "$f" = "no" || fail "clearallforwardings default"
22f=`${SSH} -GF $OBJ/ssh_config -W a:1 h | awk '/clearallforwardings/{print $2}'`
23test "$f" = "yes" || fail "clearallforwardings enable"
24f=`${SSH} -GF $OBJ/ssh_config -W a:1 -o clearallforwardings=no h | \
25    awk '/clearallforwardings/{print $2}'`
26test "$f" = "no" || fail "clearallforwardings override"
27
28verbose "user first match"
29user=`awk '$1=="User" {print $2}' $OBJ/ssh_config`
30f=`${SSH} -GF $OBJ/ssh_config host | awk '/^user /{print $2}'`
31test "$f" = "$user" || fail "user from config, expected '$user' got '$f'"
32f=`${SSH} -GF $OBJ/ssh_config -o user=foo -l bar baz@host | awk '/^user /{print $2}'`
33test "$f" = "foo" || fail "user first match -oUser, expected 'foo' got '$f' "
34f=`${SSH} -GF $OBJ/ssh_config -lbar baz@host user=foo baz@host | awk '/^user /{print $2}'`
35test "$f" = "bar" || fail "user first match -l, expected 'bar' got '$f'"
36f=`${SSH} -GF $OBJ/ssh_config baz@host -o user=foo -l bar baz@host | awk '/^user /{print $2}'`
37test "$f" = "baz" || fail "user first match user@host, expected 'baz' got '$f'"
38
39# cleanup
40rm -f $OBJ/ssh_config.[012]
41