github.com/ashishbhate/mattermost-server@v5.11.1+incompatible/config/utils_test.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package config
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  
    11  	"github.com/mattermost/mattermost-server/model"
    12  	"github.com/mattermost/mattermost-server/utils"
    13  )
    14  
    15  func TestDesanitize(t *testing.T) {
    16  	actual := &model.Config{}
    17  	actual.SetDefaults()
    18  
    19  	// These setting should be ignored
    20  	actual.LdapSettings.Enable = bToP(false)
    21  	actual.FileSettings.DriverName = sToP("s3")
    22  
    23  	// These settings should be desanitized into target.
    24  	actual.LdapSettings.BindPassword = sToP("bind_password")
    25  	actual.FileSettings.PublicLinkSalt = sToP("public_link_salt")
    26  	actual.FileSettings.AmazonS3SecretAccessKey = sToP("amazon_s3_secret_access_key")
    27  	actual.EmailSettings.SMTPPassword = sToP("smtp_password")
    28  	actual.GitLabSettings.Secret = sToP("secret")
    29  	actual.SqlSettings.DataSource = sToP("data_source")
    30  	actual.SqlSettings.AtRestEncryptKey = sToP("at_rest_encrypt_key")
    31  	actual.ElasticsearchSettings.Password = sToP("password")
    32  	actual.SqlSettings.DataSourceReplicas = append(actual.SqlSettings.DataSourceReplicas, "replica0")
    33  	actual.SqlSettings.DataSourceReplicas = append(actual.SqlSettings.DataSourceReplicas, "replica1")
    34  	actual.SqlSettings.DataSourceSearchReplicas = append(actual.SqlSettings.DataSourceSearchReplicas, "search_replica0")
    35  	actual.SqlSettings.DataSourceSearchReplicas = append(actual.SqlSettings.DataSourceSearchReplicas, "search_replica1")
    36  
    37  	target := &model.Config{}
    38  	target.SetDefaults()
    39  
    40  	// These setting should be ignored
    41  	target.LdapSettings.Enable = bToP(true)
    42  	target.FileSettings.DriverName = sToP("file")
    43  
    44  	// These settings should be updated from actual
    45  	target.LdapSettings.BindPassword = sToP(model.FAKE_SETTING)
    46  	target.FileSettings.PublicLinkSalt = sToP(model.FAKE_SETTING)
    47  	target.FileSettings.AmazonS3SecretAccessKey = sToP(model.FAKE_SETTING)
    48  	target.EmailSettings.SMTPPassword = sToP(model.FAKE_SETTING)
    49  	target.GitLabSettings.Secret = sToP(model.FAKE_SETTING)
    50  	target.SqlSettings.DataSource = sToP(model.FAKE_SETTING)
    51  	target.SqlSettings.AtRestEncryptKey = sToP(model.FAKE_SETTING)
    52  	target.ElasticsearchSettings.Password = sToP(model.FAKE_SETTING)
    53  	target.SqlSettings.DataSourceReplicas = append(target.SqlSettings.DataSourceReplicas, "old_replica0")
    54  	target.SqlSettings.DataSourceSearchReplicas = append(target.SqlSettings.DataSourceReplicas, "old_search_replica0")
    55  
    56  	actual_clone := actual.Clone()
    57  	desanitize(actual, target)
    58  	assert.Equal(t, actual_clone, actual, "actual should not have been changed")
    59  
    60  	// Verify the settings that should have been left untouched in target
    61  	assert.True(t, *target.LdapSettings.Enable, "LdapSettings.Enable should not have changed")
    62  	assert.Equal(t, "file", *target.FileSettings.DriverName, "FileSettings.DriverName should not have been changed")
    63  
    64  	// Verify the settings that should have been desanitized into target
    65  	assert.Equal(t, *actual.LdapSettings.BindPassword, *target.LdapSettings.BindPassword)
    66  	assert.Equal(t, *actual.FileSettings.PublicLinkSalt, *target.FileSettings.PublicLinkSalt)
    67  	assert.Equal(t, *actual.FileSettings.AmazonS3SecretAccessKey, *target.FileSettings.AmazonS3SecretAccessKey)
    68  	assert.Equal(t, *actual.EmailSettings.SMTPPassword, *target.EmailSettings.SMTPPassword)
    69  	assert.Equal(t, *actual.GitLabSettings.Secret, *target.GitLabSettings.Secret)
    70  	assert.Equal(t, *actual.SqlSettings.DataSource, *target.SqlSettings.DataSource)
    71  	assert.Equal(t, *actual.SqlSettings.AtRestEncryptKey, *target.SqlSettings.AtRestEncryptKey)
    72  	assert.Equal(t, *actual.ElasticsearchSettings.Password, *target.ElasticsearchSettings.Password)
    73  	assert.Equal(t, actual.SqlSettings.DataSourceReplicas, target.SqlSettings.DataSourceReplicas)
    74  	assert.Equal(t, actual.SqlSettings.DataSourceSearchReplicas, target.SqlSettings.DataSourceSearchReplicas)
    75  }
    76  
    77  func TestFixInvalidLocales(t *testing.T) {
    78  	utils.TranslationsPreInit()
    79  
    80  	cfg := &model.Config{}
    81  	cfg.SetDefaults()
    82  
    83  	*cfg.LocalizationSettings.DefaultServerLocale = "en"
    84  	*cfg.LocalizationSettings.DefaultClientLocale = "en"
    85  	*cfg.LocalizationSettings.AvailableLocales = ""
    86  
    87  	changed := FixInvalidLocales(cfg)
    88  	assert.False(t, changed)
    89  
    90  	*cfg.LocalizationSettings.DefaultServerLocale = "junk"
    91  	changed = FixInvalidLocales(cfg)
    92  	assert.True(t, changed)
    93  	assert.Equal(t, "en", *cfg.LocalizationSettings.DefaultServerLocale)
    94  
    95  	*cfg.LocalizationSettings.DefaultServerLocale = ""
    96  	changed = FixInvalidLocales(cfg)
    97  	assert.True(t, changed)
    98  	assert.Equal(t, "en", *cfg.LocalizationSettings.DefaultServerLocale)
    99  
   100  	*cfg.LocalizationSettings.AvailableLocales = "en"
   101  	*cfg.LocalizationSettings.DefaultServerLocale = "de"
   102  	changed = FixInvalidLocales(cfg)
   103  	assert.False(t, changed)
   104  	assert.NotContains(t, *cfg.LocalizationSettings.AvailableLocales, *cfg.LocalizationSettings.DefaultServerLocale, "DefaultServerLocale should not be added to AvailableLocales")
   105  
   106  	*cfg.LocalizationSettings.AvailableLocales = ""
   107  	*cfg.LocalizationSettings.DefaultClientLocale = "junk"
   108  	changed = FixInvalidLocales(cfg)
   109  	assert.True(t, changed)
   110  	assert.Equal(t, "en", *cfg.LocalizationSettings.DefaultClientLocale)
   111  
   112  	*cfg.LocalizationSettings.DefaultClientLocale = ""
   113  	changed = FixInvalidLocales(cfg)
   114  	assert.True(t, changed)
   115  	assert.Equal(t, "en", *cfg.LocalizationSettings.DefaultClientLocale)
   116  
   117  	*cfg.LocalizationSettings.AvailableLocales = "en"
   118  	*cfg.LocalizationSettings.DefaultClientLocale = "de"
   119  	changed = FixInvalidLocales(cfg)
   120  	assert.True(t, changed)
   121  	assert.Contains(t, *cfg.LocalizationSettings.AvailableLocales, *cfg.LocalizationSettings.DefaultServerLocale, "DefaultClientLocale should have been added to AvailableLocales")
   122  
   123  	// validate AvailableLocales
   124  	*cfg.LocalizationSettings.DefaultServerLocale = "en"
   125  	*cfg.LocalizationSettings.DefaultClientLocale = "en"
   126  	*cfg.LocalizationSettings.AvailableLocales = "junk"
   127  	changed = FixInvalidLocales(cfg)
   128  	assert.True(t, changed)
   129  	assert.Equal(t, "", *cfg.LocalizationSettings.AvailableLocales)
   130  
   131  	*cfg.LocalizationSettings.AvailableLocales = "en,de,junk"
   132  	changed = FixInvalidLocales(cfg)
   133  	assert.True(t, changed)
   134  	assert.Equal(t, "", *cfg.LocalizationSettings.AvailableLocales)
   135  
   136  	*cfg.LocalizationSettings.DefaultServerLocale = "fr"
   137  	*cfg.LocalizationSettings.DefaultClientLocale = "de"
   138  	*cfg.LocalizationSettings.AvailableLocales = "en"
   139  	changed = FixInvalidLocales(cfg)
   140  	assert.True(t, changed)
   141  	assert.NotContains(t, *cfg.LocalizationSettings.AvailableLocales, *cfg.LocalizationSettings.DefaultServerLocale, "DefaultServerLocale should not be added to AvailableLocales")
   142  	assert.Contains(t, *cfg.LocalizationSettings.AvailableLocales, *cfg.LocalizationSettings.DefaultClientLocale, "DefaultClientLocale should have been added to AvailableLocales")
   143  }
   144  
   145  func sToP(s string) *string {
   146  	return &s
   147  }
   148  
   149  func bToP(b bool) *bool {
   150  	return &b
   151  }
   152  
   153  func iToP(i int) *int {
   154  	return &i
   155  }