The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/pkg/cmd/grafana-cli/commands/ls_command_test.go

84 lines
2.1 KiB

package commands
import (
"errors"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/commands/commandstest"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
)
func TestMissingPath(t *testing.T) {
tests := []struct {
description string
cliContext map[string]string
ioHelper *commandstest.FakeIoUtil
error error
}{
{
description: "missing path flag",
cliContext: make(map[string]string),
ioHelper: &commandstest.FakeIoUtil{},
error: errMissingPathFlag,
},
{
description: "not a directory",
cliContext: map[string]string{"pluginsDir": "/var/lib/grafana/plugins/notadir.txt"},
ioHelper: &commandstest.FakeIoUtil{FakeIsDirectory: false},
error: errNotDirectory,
},
}
for _, tc := range tests {
t.Run(tc.description, func(t *testing.T) {
origIoHelper := services.IoHelper
services.IoHelper = tc.ioHelper
t.Cleanup(func() {
services.IoHelper = origIoHelper
})
c, err := commandstest.NewCliContext(tc.cliContext)
require.NoError(t, err)
cmd := Command{}
err = cmd.lsCommand(c)
assert.Equal(t, tc.error, err)
})
}
}
func TestValidateLsCommand_override(t *testing.T) {
expected := errors.New("dummy error")
t.Run("override validateLsCommand", func(t *testing.T) {
var org = validateLsCommand
t.Cleanup(func() {
validateLsCommand = org
})
c, err := commandstest.NewCliContext(map[string]string{"path": "/var/lib/grafana/plugins"})
require.NoError(t, err)
validateLsCommand = func(pluginDir string) error {
return expected
}
cmd := Command{}
err = cmd.lsCommand(c)
assert.Error(t, err)
assert.Equal(t, expected, err, "can override validateLsCommand")
})
// meta-test for test cleanup of global variable
t.Run("validateLsCommand reset after test", func(t *testing.T) {
c, err := commandstest.NewCliContext(map[string]string{"path": "/var/lib/grafana/plugins"})
require.NoError(t, err)
cmd := Command{}
err = cmd.lsCommand(c)
assert.NotEqual(t, err, expected, "validateLsCommand is reset")
})
}