diff --git a/plugin.go b/plugin.go index e4dca05..cdfb30a 100644 --- a/plugin.go +++ b/plugin.go @@ -12,6 +12,11 @@ import ( "golang.org/x/crypto/ssh" ) +const ( + missingHostOrUser = "Error: missing server host or user" + missingPasswordOrKey = "Error: can't connect without a private SSH key or password" +) + type ( // Config for the plugin. Config struct { @@ -33,8 +38,12 @@ type ( // Exec executes the plugin. func (p Plugin) Exec() error { + if len(p.Config.Host) == 0 && p.Config.User == "" { + return fmt.Errorf(missingHostOrUser) + } + if p.Config.Key == "" && p.Config.Password == "" { - return fmt.Errorf("Error: can't connect without a private SSH key or password") + return fmt.Errorf(missingPasswordOrKey) } for i, host := range p.Config.Host { diff --git a/plugin_test.go b/plugin_test.go index c041ffb..fc56ad5 100644 --- a/plugin_test.go +++ b/plugin_test.go @@ -6,6 +6,15 @@ import ( "github.com/stretchr/testify/assert" ) +func TestMissingHostOrUser(t *testing.T) { + plugin := Plugin{} + + err := plugin.Exec() + + assert.NotNil(t, err) + assert.Equal(t, missingHostOrUser, err.Error()) +} + func TestMissingKeyOrPassword(t *testing.T) { plugin := Plugin{ Config{ @@ -17,4 +26,5 @@ func TestMissingKeyOrPassword(t *testing.T) { err := plugin.Exec() assert.NotNil(t, err) + assert.Equal(t, missingPasswordOrKey, err.Error()) }