[MM-28885] app/plugin: check if plugin manifest has errors (#15630)
* app/plugin: dont sync plugins with errors * reflect review comments * update test * Update plugin/environment_test.go Co-authored-by: Jesse Hallam <jesse.hallam@gmail.com> * reflect review comments * reflect review comments Co-authored-by: Jesse Hallam <jesse.hallam@gmail.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
40371d8616
Коммит
1bf4373f3f
@@ -86,7 +86,8 @@ func scanSearchPath(path string) ([]*model.BundleInfo, error) {
|
||||
if !file.IsDir() || file.Name()[0] == '.' {
|
||||
continue
|
||||
}
|
||||
if info := model.BundleInfoForPath(filepath.Join(path, file.Name())); info.ManifestPath != "" {
|
||||
info := model.BundleInfoForPath(filepath.Join(path, file.Name()))
|
||||
if info.Manifest != nil {
|
||||
ret = append(ret, info)
|
||||
}
|
||||
}
|
||||
|
||||
71
plugin/environment_test.go
Обычный файл
71
plugin/environment_test.go
Обычный файл
@@ -0,0 +1,71 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package plugin
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestAvaliablePlugins(t *testing.T) {
|
||||
dir, err1 := ioutil.TempDir("", "mm-plugin-test")
|
||||
require.NoError(t, err1)
|
||||
t.Cleanup(func() {
|
||||
os.RemoveAll(dir)
|
||||
})
|
||||
|
||||
env := Environment{
|
||||
pluginDir: dir,
|
||||
}
|
||||
|
||||
t.Run("Should be able to load available plugins", func(t *testing.T) {
|
||||
bundle1 := model.BundleInfo{
|
||||
ManifestPath: "",
|
||||
Manifest: &model.Manifest{
|
||||
Id: "someid",
|
||||
Version: "1",
|
||||
},
|
||||
}
|
||||
err := os.Mkdir(filepath.Join(dir, "plugin1"), 0700)
|
||||
require.NoError(t, err)
|
||||
defer os.RemoveAll(filepath.Join(dir, "plugin1"))
|
||||
|
||||
path := filepath.Join(dir, "plugin1", "plugin.json")
|
||||
err = ioutil.WriteFile(path, []byte(bundle1.Manifest.ToJson()), 0644)
|
||||
require.NoError(t, err)
|
||||
|
||||
bundles, err := env.Available()
|
||||
require.NoError(t, err)
|
||||
require.Len(t, bundles, 1)
|
||||
})
|
||||
|
||||
t.Run("Should not be able to load plugins without a valid manifest file", func(t *testing.T) {
|
||||
err := os.Mkdir(filepath.Join(dir, "plugin2"), 0700)
|
||||
require.NoError(t, err)
|
||||
defer os.RemoveAll(filepath.Join(dir, "plugin2"))
|
||||
|
||||
path := filepath.Join(dir, "plugin2", "manifest.json")
|
||||
err = ioutil.WriteFile(path, []byte("{}"), 0644)
|
||||
require.NoError(t, err)
|
||||
|
||||
bundles, err := env.Available()
|
||||
require.NoError(t, err)
|
||||
require.Len(t, bundles, 0)
|
||||
})
|
||||
|
||||
t.Run("Should not be able to load plugins without a manifest file", func(t *testing.T) {
|
||||
err := os.Mkdir(filepath.Join(dir, "plugin3"), 0700)
|
||||
require.NoError(t, err)
|
||||
defer os.RemoveAll(filepath.Join(dir, "plugin3"))
|
||||
|
||||
bundles, err := env.Available()
|
||||
require.NoError(t, err)
|
||||
require.Len(t, bundles, 0)
|
||||
})
|
||||
}
|
||||
Ссылка в новой задаче
Block a user