mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 19:13:34 +00:00
* Add SSHCLIRemote type with buildSSHArgs Implement's Executor interface (Run, Stream, Close) * Add UseSSHCLI field to RemoteMachine struct Allow us to differentiate regular ssh from ssh+cli. * Parse ssh+cli:// scheme on machine init/add * Support SSH CLI when provisioning * Update docs to reflect ssh+cli:// support * Revert removal of `init` examples Fixes copy & pasta mistake when documenting the new ssh+cli connection methods.
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package sshexec
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSSHCLIRemote_buildSSHArgs(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
user string
|
|
host string
|
|
port int
|
|
keyPath string
|
|
expected []string
|
|
}{
|
|
{
|
|
name: "default port, no key",
|
|
user: "root",
|
|
host: "example.com",
|
|
port: 22,
|
|
keyPath: "",
|
|
expected: []string{"-o", "ConnectTimeout=5", "root@example.com"},
|
|
},
|
|
{
|
|
name: "custom port",
|
|
user: "ubuntu",
|
|
host: "192.168.1.10",
|
|
port: 2222,
|
|
keyPath: "",
|
|
expected: []string{"-o", "ConnectTimeout=5", "-p", "2222", "ubuntu@192.168.1.10"},
|
|
},
|
|
{
|
|
name: "with key path",
|
|
user: "root",
|
|
host: "example.com",
|
|
port: 22,
|
|
keyPath: "/path/to/key",
|
|
expected: []string{"-o", "ConnectTimeout=5", "-i", "/path/to/key", "root@example.com"},
|
|
},
|
|
{
|
|
name: "all options",
|
|
user: "admin",
|
|
host: "server.local",
|
|
port: 2222,
|
|
keyPath: "~/.ssh/id_rsa",
|
|
expected: []string{"-o", "ConnectTimeout=5", "-p", "2222", "-i", "~/.ssh/id_rsa", "admin@server.local"},
|
|
},
|
|
{
|
|
name: "port zero (default)",
|
|
user: "root",
|
|
host: "example.com",
|
|
port: 0,
|
|
keyPath: "",
|
|
expected: []string{"-o", "ConnectTimeout=5", "root@example.com"},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
remote := &SSHCLIRemote{
|
|
user: tt.user,
|
|
host: tt.host,
|
|
port: tt.port,
|
|
keyPath: tt.keyPath,
|
|
}
|
|
result := remote.buildSSHArgs()
|
|
assert.Equal(t, tt.expected, result)
|
|
})
|
|
}
|
|
}
|