[MM-47489] Move Shared Channels (Experimental) to Professional (#21882)

* Move shared channels to professional license

* Remove references to SharedChannels from license and use license SKU instead

* add tests

* Refactor shared channels license check and add tests

* Re-add removed negation on license check

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
Mylon Suren
2023-01-03 16:30:30 -05:00
коммит произвёл GitHub
родитель c8e70718c2
Коммит ed23df6a2e
5 изменённых файлов: 134 добавлений и 2 удалений

Просмотреть файл

@@ -595,7 +595,7 @@ func (s *Server) startInterClusterServices(license *model.License) error {
// Shared Channels service
// License check
if !*license.Features.SharedChannels {
if !license.HasSharedChannels() {
mlog.Debug("License does not have shared channels enabled")
return nil
}

Просмотреть файл

@@ -196,7 +196,7 @@ func GenerateClientConfig(c *model.Config, telemetryID string, license *model.Li
props["DataRetentionBoardsRetentionDays"] = strconv.FormatInt(int64(*c.DataRetentionSettings.BoardsRetentionDays), 10)
}
if *license.Features.SharedChannels {
if license.HasSharedChannels() {
props["ExperimentalSharedChannels"] = strconv.FormatBool(*c.ExperimentalSettings.EnableSharedChannels)
props["ExperimentalRemoteClusterService"] = strconv.FormatBool(c.FeatureFlags.EnableRemoteClusterService && *c.ExperimentalSettings.EnableRemoteClusterService)
}

Просмотреть файл

@@ -254,6 +254,78 @@ func TestGetClientConfig(t *testing.T) {
"EnableCustomGroups": "false",
},
},
{
"Shared channels other license",
&model.Config{
ExperimentalSettings: model.ExperimentalSettings{
EnableSharedChannels: model.NewBool(true),
},
},
"",
&model.License{
Features: &model.Features{
SharedChannels: model.NewBool(false),
},
SkuShortName: "other",
},
map[string]string{
"ExperimentalSharedChannels": "false",
},
},
{
"licensed for shared channels",
&model.Config{
ExperimentalSettings: model.ExperimentalSettings{
EnableSharedChannels: model.NewBool(true),
},
},
"",
&model.License{
Features: &model.Features{
SharedChannels: model.NewBool(true),
},
SkuShortName: "other",
},
map[string]string{
"ExperimentalSharedChannels": "true",
},
},
{
"Shared channels professional license",
&model.Config{
ExperimentalSettings: model.ExperimentalSettings{
EnableSharedChannels: model.NewBool(true),
},
},
"",
&model.License{
Features: &model.Features{
SharedChannels: model.NewBool(false),
},
SkuShortName: model.LicenseShortSkuProfessional,
},
map[string]string{
"ExperimentalSharedChannels": "true",
},
},
{
"Shared channels enterprise license",
&model.Config{
ExperimentalSettings: model.ExperimentalSettings{
EnableSharedChannels: model.NewBool(true),
},
},
"",
&model.License{
Features: &model.Features{
SharedChannels: model.NewBool(false),
},
SkuShortName: model.LicenseShortSkuEnterprise,
},
map[string]string{
"ExperimentalSharedChannels": "true",
},
},
}
for _, testCase := range testCases {

Просмотреть файл

@@ -312,6 +312,16 @@ func (l *License) HasEnterpriseMarketplacePlugins() bool {
l.SkuShortName == LicenseShortSkuEnterprise
}
func (l *License) HasSharedChannels() bool {
if l == nil {
return false
}
return (l.Features != nil && l.Features.SharedChannels != nil && *l.Features.SharedChannels) ||
l.SkuShortName == LicenseShortSkuProfessional ||
l.SkuShortName == LicenseShortSkuEnterprise
}
// NewTestLicense returns a license that expires in the future and has the given features.
func NewTestLicense(features ...string) *License {
ret := &License{

Просмотреть файл

@@ -343,3 +343,53 @@ func TestLicense_IsSanctionedTrial(t *testing.T) {
assert.True(t, license.IsSanctionedTrial())
})
}
func TestLicenseHasSharedChannels(t *testing.T) {
testCases := []struct {
description string
license License
expectedValue bool
}{
{
"licensed for shared channels",
License{
Features: &Features{
SharedChannels: NewBool(true),
},
SkuShortName: "other",
},
true,
},
{
"not licensed for shared channels",
License{
Features: &Features{},
SkuShortName: "other",
},
false,
},
{
"professional license for shared channels",
License{
Features: &Features{},
SkuShortName: LicenseShortSkuProfessional,
},
true,
},
{
"enterprise license for shared channels",
License{
Features: &Features{},
SkuShortName: LicenseShortSkuEnterprise,
},
true,
},
}
for _, testCase := range testCases {
t.Run(testCase.description, func(t *testing.T) {
assert.Equal(t, testCase.expectedValue, testCase.license.HasSharedChannels())
})
}
}