102 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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")
 | |
| }
 |