github.com/mattermost/mattermost-server/v5@v5.39.3/config/environment_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/require" 10 11 "github.com/mattermost/mattermost-server/v5/model" 12 ) 13 14 func modifiedDefault(modify func(*model.Config)) *model.Config { 15 def := defaultConfig() 16 modify(def) 17 return def 18 } 19 20 func defaultConfig() *model.Config { 21 def := &model.Config{} 22 def.SetDefaults() 23 return def 24 } 25 26 func TestRemoveEnvOverrides(t *testing.T) { 27 var tests = []struct { 28 name string 29 inputConfig *model.Config 30 env map[string]string 31 expectedConfig *model.Config 32 }{ 33 { 34 name: "basic override", 35 inputConfig: modifiedDefault(func(in *model.Config) { 36 *in.ServiceSettings.TLSMinVer = "1.4" 37 }), 38 env: map[string]string{ 39 "MM_SERVICESETTINGS_TLSMINVER": "1.5", 40 }, 41 expectedConfig: modifiedDefault(func(in *model.Config) { 42 *in.ServiceSettings.TLSMinVer = "1.5" 43 }), 44 }, 45 { 46 name: "feature flags", 47 inputConfig: modifiedDefault(func(in *model.Config) { 48 in.FeatureFlags.TestFeature = "somevalue" 49 }), 50 env: map[string]string{ 51 "MM_FEATUREFLAGS_TESTFEATURE": "correctvalue", 52 }, 53 expectedConfig: modifiedDefault(func(in *model.Config) { 54 in.FeatureFlags.TestFeature = "correctvalue" 55 }), 56 }, 57 { 58 name: "int setting", 59 inputConfig: modifiedDefault(func(in *model.Config) { 60 *in.ClusterSettings.GossipPort = 500 61 }), 62 env: map[string]string{ 63 "MM_CLUSTERSETTINGS_GOSSIPPORT": "600", 64 }, 65 expectedConfig: modifiedDefault(func(in *model.Config) { 66 *in.ClusterSettings.GossipPort = 600 67 }), 68 }, 69 { 70 name: "int64 setting", 71 inputConfig: modifiedDefault(func(in *model.Config) { 72 *in.ServiceSettings.TLSStrictTransportMaxAge = 500 73 }), 74 env: map[string]string{ 75 "MM_SERVICESETTINGS_TLSSTRICTTRANSPORTMAXAGE": "4294967294", 76 }, 77 expectedConfig: modifiedDefault(func(in *model.Config) { 78 *in.ServiceSettings.TLSStrictTransportMaxAge = 4294967294 79 }), 80 }, 81 { 82 name: "bool setting", 83 inputConfig: modifiedDefault(func(in *model.Config) { 84 *in.ClusterSettings.UseIpAddress = false 85 }), 86 env: map[string]string{ 87 "MM_CLUSTERSETTINGS_USEIPADDRESS": "true", 88 }, 89 expectedConfig: modifiedDefault(func(in *model.Config) { 90 *in.ClusterSettings.UseIpAddress = true 91 }), 92 }, 93 { 94 name: "[]string setting", 95 inputConfig: modifiedDefault(func(in *model.Config) { 96 in.SqlSettings.DataSourceReplicas = []string{"somthing"} 97 }), 98 env: map[string]string{ 99 "MM_SQLSETTINGS_DATASOURCEREPLICAS": "otherthing alsothis", 100 }, 101 expectedConfig: modifiedDefault(func(in *model.Config) { 102 in.SqlSettings.DataSourceReplicas = []string{"otherthing", "alsothis"} 103 }), 104 }, 105 { 106 name: "bad env", 107 inputConfig: modifiedDefault(func(in *model.Config) { 108 }), 109 env: map[string]string{ 110 "MM_SERVICESETTINGS": "huh?", 111 "NOTMM": "huh?", 112 "MM_NOTEXIST": "huh?", 113 "MM_NOTEXIST_MORE_AND_MORE": "huh?", 114 "MM_": "huh?", 115 "MM": "huh?", 116 "MM__": "huh?", 117 "_": "huh?", 118 }, 119 expectedConfig: modifiedDefault(func(in *model.Config) { 120 }), 121 }, 122 } 123 for _, testCase := range tests { 124 t.Run(testCase.name, func(t *testing.T) { 125 require.Equal(t, testCase.expectedConfig, applyEnvironmentMap(testCase.inputConfig, testCase.env)) 126 }) 127 } 128 }