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  }