github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/cmd/hkserver/cmdtestlib.go (about) 1 package main 2 3 import ( 4 "io/ioutil" 5 "path/filepath" 6 "testing" 7 8 api4 "github.com/masterhung0112/hk_server/v5/api4" 9 "github.com/masterhung0112/hk_server/v5/model" 10 "github.com/masterhung0112/hk_server/v5/testlib" 11 ) 12 13 var mainHelper *testlib.MainHelper 14 15 type testHelper struct { 16 *api4.TestHelper 17 18 config *model.Config 19 tempDir string 20 configFilePath string 21 disableAutoConfig bool 22 } 23 24 // Setup creates an instance of testHelper. 25 func Setup(t testing.TB) *testHelper { 26 dir, err := ioutil.TempDir("", "testHelper") 27 if err != nil { 28 panic("failed to create temporary directory: " + err.Error()) 29 } 30 31 api4TestHelper := api4.Setup(t) 32 33 testHelper := &testHelper{ 34 TestHelper: api4TestHelper, 35 tempDir: dir, 36 configFilePath: filepath.Join(dir, "config-helper.json"), 37 } 38 39 config := &model.Config{} 40 config.SetDefaults() 41 testHelper.SetConfig(config) 42 43 return testHelper 44 } 45 46 // SetConfig replaces the configuration passed to a running command. 47 func (h *testHelper) SetConfig(config *model.Config) { 48 if !testing.Short() { 49 config.SqlSettings = *mainHelper.GetSQLSettings() 50 } 51 52 // Disable strict password requirements for test 53 *config.PasswordSettings.MinimumLength = 5 54 *config.PasswordSettings.Lowercase = false 55 *config.PasswordSettings.Uppercase = false 56 *config.PasswordSettings.Symbol = false 57 *config.PasswordSettings.Number = false 58 59 h.config = config 60 61 if err := ioutil.WriteFile(h.configFilePath, []byte(config.ToJson()), 0600); err != nil { 62 panic("failed to write file " + h.configFilePath + ": " + err.Error()) 63 } 64 }