package config import ( "fmt" "os" "path/filepath" "strings" "testing" "time" "github.com/micro/go-micro/config/source/file" ) func createFileForTest(t *testing.T) *os.File { data := []byte(`{"foo": "bar"}`) path := filepath.Join(os.TempDir(), fmt.Sprintf("file.%d", time.Now().UnixNano())) fh, err := os.Create(path) if err != nil { t.Error(err) } _, err = fh.Write(data) if err != nil { t.Error(err) } return fh } func TestLoadWithGoodFile(t *testing.T) { fh := createFileForTest(t) path := fh.Name() defer func() { fh.Close() os.Remove(path) }() // Create new config conf := NewConfig() // Load file source if err := conf.Load(file.NewSource( file.WithPath(path), )); err != nil { t.Fatalf("Expected no error but got %v", err) } } func TestLoadWithInvalidFile(t *testing.T) { fh := createFileForTest(t) path := fh.Name() defer func() { fh.Close() os.Remove(path) }() // Create new config conf := NewConfig() // Load file source err := conf.Load(file.NewSource( file.WithPath(path), file.WithPath("/i/do/not/exists.json"), )) if err == nil { t.Fatal("Expected error but none !") } if !strings.Contains(fmt.Sprintf("%v", err), "/i/do/not/exists.json") { t.Fatalf("Expected error to contain the unexisting file but got %v", err) } } func TestConsul(t *testing.T) { /*consulSource := consul.NewSource( // optionally specify consul address; default to localhost:8500 consul.WithAddress("131.150.38.111:8500"), // optionally specify prefix; defaults to /micro/config consul.WithPrefix("/project"), // optionally strip the provided prefix from the keys, defaults to false consul.StripPrefix(true), consul.WithDatacenter("dc1"), consul.WithToken("xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"), ) // Create new config conf := NewConfig() // Load file source err := conf.Load(consulSource) if err != nil { t.Error(err) return } m := conf.Map() t.Log("m: ", m) v := conf.Get("project", "dc111", "port") t.Log("v: ", v.Int(13))*/ t.Log("OK") }