diff options
author | Saturnino Abril <saturnino.abril@gmail.com> | 2017-08-06 06:45:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-06 06:45:46 +0800 |
commit | 9f3713aa98011596a62315fd3b96fa2e77044081 (patch) | |
tree | b19f16ac6cd421d6540f7c8b6495fceb29838524 /utils/config_test.go | |
parent | 2ab2baba5899758b909e8ce80479d497eea4c80c (diff) | |
download | chat-9f3713aa98011596a62315fd3b96fa2e77044081.tar.gz chat-9f3713aa98011596a62315fd3b96fa2e77044081.tar.bz2 chat-9f3713aa98011596a62315fd3b96fa2e77044081.zip |
[PLT-7231/PLT-7306] Fix GitLab SSO failure with non-English locale and make config locales more forgiving (#7125)
Diffstat (limited to 'utils/config_test.go')
-rw-r--r-- | utils/config_test.go | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/utils/config_test.go b/utils/config_test.go index 3032766ec..a6bfa4e82 100644 --- a/utils/config_test.go +++ b/utils/config_test.go @@ -5,6 +5,7 @@ package utils import ( "os" + "strings" "testing" "time" @@ -157,3 +158,122 @@ func TestConfigListener(t *testing.T) { t.Fatal("listener 2 should've been called") } } + +func TestValidateLocales(t *testing.T) { + TranslationsPreInit() + LoadConfig("config.json") + + defaultServerLocale := *Cfg.LocalizationSettings.DefaultServerLocale + defaultClientLocale := *Cfg.LocalizationSettings.DefaultClientLocale + availableLocales := *Cfg.LocalizationSettings.AvailableLocales + + defer func() { + *Cfg.LocalizationSettings.DefaultClientLocale = defaultClientLocale + *Cfg.LocalizationSettings.DefaultServerLocale = defaultServerLocale + *Cfg.LocalizationSettings.AvailableLocales = availableLocales + }() + + *Cfg.LocalizationSettings.DefaultServerLocale = "en" + *Cfg.LocalizationSettings.DefaultClientLocale = "en" + *Cfg.LocalizationSettings.AvailableLocales = "" + + // t.Logf("*Cfg.LocalizationSettings.DefaultClientLocale: %+v", *Cfg.LocalizationSettings.DefaultClientLocale) + if err := ValidateLocales(Cfg); err != nil { + t.Fatal("Should have not returned an error") + } + + // validate DefaultServerLocale + *Cfg.LocalizationSettings.DefaultServerLocale = "junk" + if err := ValidateLocales(Cfg); err != nil { + if *Cfg.LocalizationSettings.DefaultServerLocale != "en" { + t.Fatal("DefaultServerLocale should have assigned to en as a default value") + } + } else { + + t.Fatal("Should have returned an error validating DefaultServerLocale") + } + + *Cfg.LocalizationSettings.DefaultServerLocale = "" + if err := ValidateLocales(Cfg); err != nil { + if *Cfg.LocalizationSettings.DefaultServerLocale != "en" { + t.Fatal("DefaultServerLocale should have assigned to en as a default value") + } + } else { + t.Fatal("Should have returned an error validating DefaultServerLocale") + } + + *Cfg.LocalizationSettings.AvailableLocales = "en" + *Cfg.LocalizationSettings.DefaultServerLocale = "de" + if err := ValidateLocales(Cfg); err != nil { + if strings.Contains(*Cfg.LocalizationSettings.AvailableLocales, *Cfg.LocalizationSettings.DefaultServerLocale) { + t.Fatal("DefaultServerLocale should not be added to AvailableLocales") + } + t.Fatal("Should have not returned an error validating DefaultServerLocale") + } + + // validate DefaultClientLocale + *Cfg.LocalizationSettings.AvailableLocales = "" + *Cfg.LocalizationSettings.DefaultClientLocale = "junk" + if err := ValidateLocales(Cfg); err != nil { + if *Cfg.LocalizationSettings.DefaultClientLocale != "en" { + t.Fatal("DefaultClientLocale should have assigned to en as a default value") + } + } else { + + t.Fatal("Should have returned an error validating DefaultClientLocale") + } + + *Cfg.LocalizationSettings.DefaultClientLocale = "" + if err := ValidateLocales(Cfg); err != nil { + if *Cfg.LocalizationSettings.DefaultClientLocale != "en" { + t.Fatal("DefaultClientLocale should have assigned to en as a default value") + } + } else { + t.Fatal("Should have returned an error validating DefaultClientLocale") + } + + *Cfg.LocalizationSettings.AvailableLocales = "en" + *Cfg.LocalizationSettings.DefaultClientLocale = "de" + if err := ValidateLocales(Cfg); err != nil { + if !strings.Contains(*Cfg.LocalizationSettings.AvailableLocales, *Cfg.LocalizationSettings.DefaultClientLocale) { + t.Fatal("DefaultClientLocale should have added to AvailableLocales") + } + } else { + t.Fatal("Should have returned an error validating DefaultClientLocale") + } + + // validate AvailableLocales + *Cfg.LocalizationSettings.DefaultServerLocale = "en" + *Cfg.LocalizationSettings.DefaultClientLocale = "en" + *Cfg.LocalizationSettings.AvailableLocales = "junk" + if err := ValidateLocales(Cfg); err != nil { + if *Cfg.LocalizationSettings.AvailableLocales != "" { + t.Fatal("AvailableLocales should have assigned to empty string as a default value") + } + } else { + t.Fatal("Should have returned an error validating AvailableLocales") + } + + *Cfg.LocalizationSettings.AvailableLocales = "en,de,junk" + if err := ValidateLocales(Cfg); err != nil { + if *Cfg.LocalizationSettings.AvailableLocales != "" { + t.Fatal("AvailableLocales should have assigned to empty string as a default value") + } + } else { + t.Fatal("Should have returned an error validating AvailableLocales") + } + + *Cfg.LocalizationSettings.DefaultServerLocale = "fr" + *Cfg.LocalizationSettings.DefaultClientLocale = "de" + *Cfg.LocalizationSettings.AvailableLocales = "en" + if err := ValidateLocales(Cfg); err != nil { + if strings.Contains(*Cfg.LocalizationSettings.AvailableLocales, *Cfg.LocalizationSettings.DefaultServerLocale) { + t.Fatal("DefaultServerLocale should not be added to AvailableLocales") + } + if !strings.Contains(*Cfg.LocalizationSettings.AvailableLocales, *Cfg.LocalizationSettings.DefaultClientLocale) { + t.Fatal("DefaultClientLocale should have added to AvailableLocales") + } + } else { + t.Fatal("Should have returned an error validating AvailableLocales") + } +} |