package main import ( "os" "path/filepath" "regexp" "runtime" "testing" ) var ( rpcuserRegexp = regexp.MustCompile("(?m)^rpcuser=.+$") rpcpassRegexp = regexp.MustCompile("(?m)^rpcpass=.+$") ) func TestCreateDefaultConfigFile(t *testing.T) { // find out where the sample config lives _, path, _, ok := runtime.Caller(0) if !ok { t.Fatalf("Failed finding config file path") } sampleConfigFile := filepath.Join(filepath.Dir(path), "sample-btcd.conf") // Setup a temporary directory tmpDir, err := os.MkdirTemp("", "btcd") if err != nil { t.Fatalf("Failed creating a temporary directory: %v", err) } testpath := filepath.Join(tmpDir, "test.conf") // copy config file to location of btcd binary data, err := os.ReadFile(sampleConfigFile) if err != nil { t.Fatalf("Failed reading sample config file: %v", err) } appPath, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { t.Fatalf("Failed obtaining app path: %v", err) } tmpConfigFile := filepath.Join(appPath, "sample-btcd.conf") err = os.WriteFile(tmpConfigFile, data, 0644) if err != nil { t.Fatalf("Failed copying sample config file: %v", err) } // Clean-up defer func() { os.Remove(testpath) os.Remove(tmpConfigFile) os.Remove(tmpDir) }() err = createDefaultConfigFile(testpath) if err != nil { t.Fatalf("Failed to create a default config file: %v", err) } content, err := os.ReadFile(testpath) if err != nil { t.Fatalf("Failed to read generated default config file: %v", err) } if !rpcuserRegexp.Match(content) { t.Error("Could not find rpcuser in generated default config file.") } if !rpcpassRegexp.Match(content) { t.Error("Could not find rpcpass in generated default config file.") } }