[MM-26507] Send license type for install plugin request (#14913)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
a34ea6ad63
Коммит
43f7acd45a
@@ -1371,6 +1371,111 @@ func TestInstallMarketplacePlugin(t *testing.T) {
|
|||||||
require.Nil(t, appErr)
|
require.Nil(t, appErr)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("verify EnterprisePlugins is false for TE", func(t *testing.T) {
|
||||||
|
requestHandled := false
|
||||||
|
|
||||||
|
testServer := httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
||||||
|
licenseType, ok := req.URL.Query()["enterprise_plugins"]
|
||||||
|
require.True(t, ok)
|
||||||
|
require.Len(t, licenseType, 1)
|
||||||
|
require.Equal(t, "false", licenseType[0])
|
||||||
|
|
||||||
|
res.WriteHeader(http.StatusOK)
|
||||||
|
json, err := json.Marshal([]*model.MarketplacePlugin{samplePlugins[0]})
|
||||||
|
require.NoError(t, err)
|
||||||
|
_, err = res.Write(json)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
requestHandled = true
|
||||||
|
}))
|
||||||
|
defer func() { testServer.Close() }()
|
||||||
|
|
||||||
|
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
*cfg.PluginSettings.EnableMarketplace = true
|
||||||
|
*cfg.PluginSettings.EnableRemoteMarketplace = true
|
||||||
|
*cfg.PluginSettings.MarketplaceUrl = testServer.URL
|
||||||
|
})
|
||||||
|
|
||||||
|
// The content of the request is irrelevant. This test only cares about enterprise_plugins.
|
||||||
|
pRequest := &model.InstallMarketplacePluginRequest{}
|
||||||
|
manifest, resp := th.SystemAdminClient.InstallMarketplacePlugin(pRequest)
|
||||||
|
CheckInternalErrorStatus(t, resp)
|
||||||
|
require.Nil(t, manifest)
|
||||||
|
assert.True(t, requestHandled)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("verify EnterprisePlugins is false for E10", func(t *testing.T) {
|
||||||
|
requestHandled := false
|
||||||
|
|
||||||
|
testServer := httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
||||||
|
licenseType, ok := req.URL.Query()["enterprise_plugins"]
|
||||||
|
require.True(t, ok)
|
||||||
|
require.Len(t, licenseType, 1)
|
||||||
|
require.Equal(t, "false", licenseType[0])
|
||||||
|
|
||||||
|
res.WriteHeader(http.StatusOK)
|
||||||
|
json, err := json.Marshal([]*model.MarketplacePlugin{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
_, err = res.Write(json)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
requestHandled = true
|
||||||
|
}))
|
||||||
|
defer func() { testServer.Close() }()
|
||||||
|
|
||||||
|
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
*cfg.PluginSettings.EnableMarketplace = true
|
||||||
|
*cfg.PluginSettings.EnableRemoteMarketplace = true
|
||||||
|
*cfg.PluginSettings.MarketplaceUrl = testServer.URL
|
||||||
|
})
|
||||||
|
|
||||||
|
l := model.NewTestLicense()
|
||||||
|
// model.NewTestLicense generates a E20 license
|
||||||
|
*l.Features.EnterprisePlugins = false
|
||||||
|
th.App.Srv().SetLicense(l)
|
||||||
|
|
||||||
|
// The content of the request is irrelevant. This test only cares about enterprise_plugins.
|
||||||
|
pRequest := &model.InstallMarketplacePluginRequest{}
|
||||||
|
manifest, resp := th.SystemAdminClient.InstallMarketplacePlugin(pRequest)
|
||||||
|
CheckInternalErrorStatus(t, resp)
|
||||||
|
require.Nil(t, manifest)
|
||||||
|
assert.True(t, requestHandled)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("verify EnterprisePlugins is true for E20", func(t *testing.T) {
|
||||||
|
requestHandled := false
|
||||||
|
|
||||||
|
testServer := httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
||||||
|
licenseType, ok := req.URL.Query()["enterprise_plugins"]
|
||||||
|
require.True(t, ok)
|
||||||
|
require.Len(t, licenseType, 1)
|
||||||
|
require.Equal(t, "true", licenseType[0])
|
||||||
|
|
||||||
|
res.WriteHeader(http.StatusOK)
|
||||||
|
json, err := json.Marshal([]*model.MarketplacePlugin{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
_, err = res.Write(json)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
requestHandled = true
|
||||||
|
}))
|
||||||
|
defer func() { testServer.Close() }()
|
||||||
|
|
||||||
|
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
*cfg.PluginSettings.EnableMarketplace = true
|
||||||
|
*cfg.PluginSettings.MarketplaceUrl = testServer.URL
|
||||||
|
})
|
||||||
|
|
||||||
|
th.App.Srv().SetLicense(model.NewTestLicense("enterprise_plugins"))
|
||||||
|
|
||||||
|
// The content of the request is irrelevant. This test only cares about enterprise_plugins.
|
||||||
|
pRequest := &model.InstallMarketplacePluginRequest{}
|
||||||
|
manifest, resp := th.SystemAdminClient.InstallMarketplacePlugin(pRequest)
|
||||||
|
CheckInternalErrorStatus(t, resp)
|
||||||
|
require.Nil(t, manifest)
|
||||||
|
assert.True(t, requestHandled)
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("install prepackaged and remote plugins through marketplace", func(t *testing.T) {
|
t.Run("install prepackaged and remote plugins through marketplace", func(t *testing.T) {
|
||||||
prepackagedPluginsDir := "prepackaged_plugins"
|
prepackagedPluginsDir := "prepackaged_plugins"
|
||||||
|
|
||||||
|
|||||||
@@ -497,7 +497,9 @@ func (a *App) getRemoteMarketplacePlugin(pluginId, version string) (*model.BaseM
|
|||||||
return nil, model.NewAppError("GetMarketplacePlugin", "app.plugin.marketplace_client.app_error", nil, err.Error(), http.StatusInternalServerError)
|
return nil, model.NewAppError("GetMarketplacePlugin", "app.plugin.marketplace_client.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
filter := &model.MarketplacePluginFilter{Filter: pluginId, ServerVersion: model.CurrentVersion}
|
filter := a.getBaseMarketplaceFilter()
|
||||||
|
filter.Filter = pluginId
|
||||||
|
|
||||||
plugin, err := marketplaceClient.GetPlugin(filter, version)
|
plugin, err := marketplaceClient.GetPlugin(filter, version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, model.NewAppError("GetMarketplacePlugin", "app.plugin.marketplace_plugins.not_found.app_error", nil, err.Error(), http.StatusInternalServerError)
|
return nil, model.NewAppError("GetMarketplacePlugin", "app.plugin.marketplace_plugins.not_found.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||||
@@ -522,20 +524,9 @@ func (a *App) getRemotePlugins() (map[string]*model.MarketplacePlugin, *model.Ap
|
|||||||
return nil, model.NewAppError("getRemotePlugins", "app.plugin.marketplace_client.app_error", nil, err.Error(), http.StatusInternalServerError)
|
return nil, model.NewAppError("getRemotePlugins", "app.plugin.marketplace_client.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filter := a.getBaseMarketplaceFilter()
|
||||||
// Fetch all plugins from marketplace.
|
// Fetch all plugins from marketplace.
|
||||||
filter := &model.MarketplacePluginFilter{
|
filter.PerPage = -1
|
||||||
PerPage: -1,
|
|
||||||
ServerVersion: model.CurrentVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
license := a.Srv().License()
|
|
||||||
if license != nil && *license.Features.EnterprisePlugins {
|
|
||||||
filter.EnterprisePlugins = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if model.BuildEnterpriseReady == "true" {
|
|
||||||
filter.BuildEnterpriseReady = true
|
|
||||||
}
|
|
||||||
|
|
||||||
marketplacePlugins, err := marketplaceClient.GetPlugins(filter)
|
marketplacePlugins, err := marketplaceClient.GetPlugins(filter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -655,6 +646,23 @@ func (a *App) mergeLocalPlugins(remoteMarketplacePlugins map[string]*model.Marke
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *App) getBaseMarketplaceFilter() *model.MarketplacePluginFilter {
|
||||||
|
filter := &model.MarketplacePluginFilter{
|
||||||
|
ServerVersion: model.CurrentVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
license := a.Srv().License()
|
||||||
|
if license != nil && *license.Features.EnterprisePlugins {
|
||||||
|
filter.EnterprisePlugins = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if model.BuildEnterpriseReady == "true" {
|
||||||
|
filter.BuildEnterpriseReady = true
|
||||||
|
}
|
||||||
|
|
||||||
|
return filter
|
||||||
|
}
|
||||||
|
|
||||||
func pluginMatchesFilter(manifest *model.Manifest, filter string) bool {
|
func pluginMatchesFilter(manifest *model.Manifest, filter string) bool {
|
||||||
filter = strings.TrimSpace(strings.ToLower(filter))
|
filter = strings.TrimSpace(strings.ToLower(filter))
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user