47 lines
1.6 KiB
Go
47 lines
1.6 KiB
Go
package ssh
|
|
|
|
import "testing"
|
|
|
|
func TestParseOptionClusters(t *testing.T) {
|
|
for _, args := range [][]string{
|
|
{"-vp", "2222", "server"},
|
|
{"-vp2222", "server"},
|
|
{"-vAl", "admin", "server"},
|
|
{"-vladmin", "server"},
|
|
{"-B", "eth0", "server"},
|
|
{"-P", "production", "server"},
|
|
} {
|
|
t.Run(args[0], func(t *testing.T) {
|
|
assertParsed(t, Parse(args), "server", "", len(args)-1)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestExplicitSSHOptions(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
args []string
|
|
user, port bool
|
|
}{
|
|
{"cluster port separated", []string{"-vp", "2222", "server"}, false, true},
|
|
{"cluster user attached", []string{"-vladmin", "server"}, true, false},
|
|
{"o separated", []string{"-o", "User=admin", "-o", "Port=2222", "server"}, true, true},
|
|
{"o attached and case insensitive", []string{"-ouSeR=admin", "-oport=2222", "server"}, true, true},
|
|
{"o whitespace", []string{"-o", " User = admin", "-o", "Port\t2222", "server"}, true, true},
|
|
{"cluster o", []string{"-voUser=admin", "server"}, true, false},
|
|
{"option value looks like flag", []string{"-i", "-lroot", "-F", "-p2222", "server"}, false, false},
|
|
{"remote flags", []string{"server", "-p2222", "-o", "User=admin"}, false, false},
|
|
{"after double dash", []string{"--", "-lroot", "-p2222"}, false, false},
|
|
{"missing value", []string{"-vp"}, false, false},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
if got := HasUserFlag(tc.args); got != tc.user {
|
|
t.Errorf("HasUserFlag(%v) = %v, want %v", tc.args, got, tc.user)
|
|
}
|
|
if got := HasPortFlag(tc.args); got != tc.port {
|
|
t.Errorf("HasPortFlag(%v) = %v, want %v", tc.args, got, tc.port)
|
|
}
|
|
})
|
|
}
|
|
}
|