k9s/internal/config/plugin_test.go

88 lines
2.0 KiB
Go

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package config
import (
"os"
"testing"
"github.com/adrg/xdg"
"github.com/stretchr/testify/assert"
)
var pluginYmlTestData = Plugin{
Scopes: []string{"po", "dp"},
Args: []string{"-n", "$NAMESPACE", "-boolean"},
ShortCut: "shift-s",
Description: "blee",
Command: "duh",
Confirm: true,
Background: false,
}
var test1YmlTestData = Plugin{
Scopes: []string{"po", "dp"},
Args: []string{"-n", "$NAMESPACE", "-boolean"},
ShortCut: "shift-s",
Description: "blee",
Command: "duh",
Confirm: true,
Background: false,
}
var test2YmlTestData = Plugin{
Scopes: []string{"svc", "ing"},
Args: []string{"-n", "$NAMESPACE", "-oyaml"},
ShortCut: "shift-r",
Description: "bla",
Command: "duha",
Confirm: false,
Background: true,
}
func TestPluginLoad(t *testing.T) {
AppPluginsFile = "/tmp/k9s-test/fred.yaml"
os.Setenv("XDG_DATA_HOME", "/tmp/k9s-test")
xdg.Reload()
p := NewPlugins()
assert.NoError(t, p.Load("testdata/plugins.yaml"))
assert.Equal(t, 1, len(p.Plugins))
k, ok := p.Plugins["blah"]
assert.True(t, ok)
assert.ObjectsAreEqual(pluginYmlTestData, k)
}
func TestSinglePluginFileLoad(t *testing.T) {
p := NewPlugins()
assert.NoError(t, p.load("testdata/plugins.yaml"))
assert.NoError(t, p.loadPluginDir("/random/dir/not/exist"))
assert.Equal(t, 1, len(p.Plugins))
k, ok := p.Plugins["blah"]
assert.True(t, ok)
assert.ObjectsAreEqual(pluginYmlTestData, k)
}
func TestMultiplePluginFilesLoad(t *testing.T) {
p := NewPlugins()
assert.NoError(t, p.load("testdata/plugins.yaml"))
assert.NoError(t, p.loadPluginDir("testdata/plugins"))
testPlugins := map[string]Plugin{
"blah": pluginYmlTestData,
"test1": test1YmlTestData,
"test2": test2YmlTestData,
}
assert.Equal(t, len(testPlugins), len(p.Plugins))
for name, expectedPlugin := range testPlugins {
k, ok := p.Plugins[name]
assert.True(t, ok)
assert.ObjectsAreEqual(expectedPlugin, k)
}
}