v8.0 module release (#22975)
https://mattermost.atlassian.net/browse/MM-52079 ```release-note We upgrade the module version to 8.0. The new module path is github.com/mattermost-server/server/v8. ``` Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
831ea38f7e
Коммит
b200a07881
98
server/plugin/environment_test.go
Обычный файл
98
server/plugin/environment_test.go
Обычный файл
@@ -0,0 +1,98 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package plugin
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/mattermost/mattermost-server/server/v8/model"
|
||||
"github.com/mattermost/mattermost-server/server/v8/platform/shared/mlog"
|
||||
)
|
||||
|
||||
func TestAvailablePlugins(t *testing.T) {
|
||||
dir, err1 := os.MkdirTemp("", "mm-plugin-test")
|
||||
require.NoError(t, err1)
|
||||
t.Cleanup(func() {
|
||||
os.RemoveAll(dir)
|
||||
})
|
||||
|
||||
testLogger, _ := mlog.NewLogger()
|
||||
env := Environment{
|
||||
pluginDir: dir,
|
||||
logger: testLogger,
|
||||
}
|
||||
|
||||
t.Run("Should be able to load available plugins", func(t *testing.T) {
|
||||
bundle1 := model.BundleInfo{
|
||||
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")
|
||||
manifestJSON, jsonErr := json.Marshal(bundle1.Manifest)
|
||||
require.NoError(t, jsonErr)
|
||||
err = os.WriteFile(path, manifestJSON, 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 = os.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)
|
||||
})
|
||||
|
||||
t.Run("Should not load bundles on blocklist", func(t *testing.T) {
|
||||
bundle := model.BundleInfo{
|
||||
Manifest: &model.Manifest{
|
||||
Id: "playbooks",
|
||||
Version: "1",
|
||||
},
|
||||
}
|
||||
err := os.Mkdir(filepath.Join(dir, "plugin4"), 0700)
|
||||
require.NoError(t, err)
|
||||
defer os.RemoveAll(filepath.Join(dir, "plugin4"))
|
||||
|
||||
path := filepath.Join(dir, "plugin4", "plugin.json")
|
||||
manifestJSON, jsonErr := json.Marshal(bundle.Manifest)
|
||||
require.NoError(t, jsonErr)
|
||||
err = os.WriteFile(path, manifestJSON, 0644)
|
||||
require.NoError(t, err)
|
||||
|
||||
bundles, err := env.Available()
|
||||
require.NoError(t, err)
|
||||
require.Len(t, bundles, 0)
|
||||
})
|
||||
}
|
||||
Ссылка в новой задаче
Block a user