Implement experimental REST API endpoints for plugins (#7279)
* Implement experimental REST API endpoints for plugins * Updates per feedback and rebase * Update tests * Further updates * Update extraction of plugins * Use OS temp dir for plugins instead of search path * Fail extraction on paths that attempt to traverse upward * Update pluginenv ActivePlugins()
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
74b5e52c4e
Коммит
899ab31fff
@@ -7,6 +7,7 @@ import (
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/platform/model"
|
||||
"github.com/mattermost/platform/plugin"
|
||||
)
|
||||
|
||||
@@ -116,7 +117,7 @@ func (s *Supervisor) runPlugin(ctx context.Context, start chan<- error) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func SupervisorProvider(bundle *plugin.BundleInfo) (plugin.Supervisor, error) {
|
||||
func SupervisorProvider(bundle *model.BundleInfo) (plugin.Supervisor, error) {
|
||||
if bundle.Manifest == nil {
|
||||
return nil, fmt.Errorf("no manifest available")
|
||||
} else if bundle.Manifest.Backend == nil || bundle.Manifest.Backend.Executable == "" {
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/mattermost/platform/plugin"
|
||||
"github.com/mattermost/platform/model"
|
||||
)
|
||||
|
||||
func TestSupervisor(t *testing.T) {
|
||||
@@ -35,7 +35,7 @@ func TestSupervisor(t *testing.T) {
|
||||
|
||||
ioutil.WriteFile(filepath.Join(dir, "plugin.json"), []byte(`{"id": "foo", "backend": {"executable": "backend.exe"}}`), 0600)
|
||||
|
||||
bundle := plugin.BundleInfoForPath(dir)
|
||||
bundle := model.BundleInfoForPath(dir)
|
||||
supervisor, err := SupervisorProvider(bundle)
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, supervisor.Start())
|
||||
@@ -61,7 +61,7 @@ func TestSupervisor_StartTimeout(t *testing.T) {
|
||||
|
||||
ioutil.WriteFile(filepath.Join(dir, "plugin.json"), []byte(`{"id": "foo", "backend": {"executable": "backend.exe"}}`), 0600)
|
||||
|
||||
bundle := plugin.BundleInfoForPath(dir)
|
||||
bundle := model.BundleInfoForPath(dir)
|
||||
supervisor, err := SupervisorProvider(bundle)
|
||||
require.NoError(t, err)
|
||||
require.Error(t, supervisor.Start())
|
||||
@@ -98,7 +98,7 @@ func TestSupervisor_PluginCrash(t *testing.T) {
|
||||
|
||||
ioutil.WriteFile(filepath.Join(dir, "plugin.json"), []byte(`{"id": "foo", "backend": {"executable": "backend.exe"}}`), 0600)
|
||||
|
||||
bundle := plugin.BundleInfoForPath(dir)
|
||||
bundle := model.BundleInfoForPath(dir)
|
||||
supervisor, err := SupervisorProvider(bundle)
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, supervisor.Start())
|
||||
|
||||
Ссылка в новой задаче
Block a user