github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/command/plugin_status_test.go (about) 1 package command 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/go-memdb" 7 "github.com/hashicorp/nomad/ci" 8 "github.com/hashicorp/nomad/nomad/state" 9 "github.com/mitchellh/cli" 10 "github.com/posener/complete" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestPluginStatusCommand_Implements(t *testing.T) { 15 ci.Parallel(t) 16 var _ cli.Command = &PluginStatusCommand{} 17 } 18 19 func TestPluginStatusCommand_Fails(t *testing.T) { 20 ci.Parallel(t) 21 ui := cli.NewMockUi() 22 cmd := &PluginStatusCommand{Meta: Meta{Ui: ui}} 23 24 // Fails on misuse 25 code := cmd.Run([]string{"some", "bad", "args"}) 26 require.Equal(t, 1, code) 27 28 out := ui.ErrorWriter.String() 29 require.Contains(t, out, commandErrorText(cmd)) 30 ui.ErrorWriter.Reset() 31 32 // Test an unsupported plugin type. 33 code = cmd.Run([]string{"-type=not-a-plugin"}) 34 require.Equal(t, 1, code) 35 36 out = ui.ErrorWriter.String() 37 require.Contains(t, out, "Unsupported plugin type: not-a-plugin") 38 ui.ErrorWriter.Reset() 39 } 40 41 func TestPluginStatusCommand_AutocompleteArgs(t *testing.T) { 42 ci.Parallel(t) 43 44 srv, _, url := testServer(t, true, nil) 45 defer srv.Shutdown() 46 47 ui := cli.NewMockUi() 48 cmd := &PluginStatusCommand{Meta: Meta{Ui: ui, flagAddress: url}} 49 50 // Create a plugin 51 id := "long-plugin-id" 52 s := srv.Agent.Server().State() 53 cleanup := state.CreateTestCSIPlugin(s, id) 54 defer cleanup() 55 ws := memdb.NewWatchSet() 56 plug, err := s.CSIPluginByID(ws, id) 57 require.NoError(t, err) 58 59 prefix := plug.ID[:len(plug.ID)-5] 60 args := complete.Args{Last: prefix} 61 predictor := cmd.AutocompleteArgs() 62 63 res := predictor.Predict(args) 64 require.Equal(t, 1, len(res)) 65 require.Equal(t, plug.ID, res[0]) 66 }