github.com/adacta-ru/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 }