mirror of
https://github.com/mattermost/mattermost.git
synced 2026-02-20 16:31:10 -05:00
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package pluginenv
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/mattermost/mattermost-server/model"
|
|
)
|
|
|
|
func TestScanSearchPath(t *testing.T) {
|
|
dir := initTmpDir(t, map[string]string{
|
|
".foo/plugin.json": `{"id": "foo"}`,
|
|
"foo/bar": "asdf",
|
|
"foo/plugin.json": `{"id": "foo"}`,
|
|
"bar/zxc": "qwer",
|
|
"baz/plugin.yaml": "id: baz",
|
|
"bad/plugin.json": "asd",
|
|
"qwe": "asd",
|
|
})
|
|
defer os.RemoveAll(dir)
|
|
|
|
plugins, err := ScanSearchPath(dir)
|
|
require.NoError(t, err)
|
|
assert.Len(t, plugins, 3)
|
|
assert.Contains(t, plugins, &model.BundleInfo{
|
|
Path: filepath.Join(dir, "foo"),
|
|
ManifestPath: filepath.Join(dir, "foo", "plugin.json"),
|
|
Manifest: &model.Manifest{
|
|
Id: "foo",
|
|
},
|
|
})
|
|
assert.Contains(t, plugins, &model.BundleInfo{
|
|
Path: filepath.Join(dir, "baz"),
|
|
ManifestPath: filepath.Join(dir, "baz", "plugin.yaml"),
|
|
Manifest: &model.Manifest{
|
|
Id: "baz",
|
|
},
|
|
})
|
|
foundError := false
|
|
for _, x := range plugins {
|
|
if x.ManifestError != nil {
|
|
assert.Equal(t, x.Path, filepath.Join(dir, "bad"))
|
|
assert.Equal(t, x.ManifestPath, filepath.Join(dir, "bad", "plugin.json"))
|
|
syntexError, ok := x.ManifestError.(*json.SyntaxError)
|
|
assert.True(t, ok)
|
|
assert.EqualValues(t, 1, syntexError.Offset)
|
|
foundError = true
|
|
}
|
|
}
|
|
assert.True(t, foundError)
|
|
}
|
|
|
|
func TestScanSearchPath_Error(t *testing.T) {
|
|
plugins, err := ScanSearchPath("not a valid path!")
|
|
assert.Nil(t, plugins)
|
|
assert.Error(t, err)
|
|
}
|