github.com/unionj-cloud/go-doudou/v2@v2.3.5/toolkit/yaml/yaml_test.go (about) 1 package yaml_test 2 3 import ( 4 "bytes" 5 "github.com/pkg/errors" 6 "github.com/stretchr/testify/require" 7 "github.com/unionj-cloud/go-doudou/v2/toolkit/yaml" 8 "io" 9 "io/ioutil" 10 "os" 11 "strings" 12 "testing" 13 ) 14 15 func TestLoad_dev(t *testing.T) { 16 defer os.Clearenv() 17 _ = os.Chdir("testdata") 18 yaml.Load("dev") 19 port := os.Getenv("GDD_PORT") 20 require.Equal(t, "8080", port) 21 22 nacosServer := os.Getenv("GDD_NACOS_SERVER_ADDR") 23 require.Equal(t, "http://localhost:8848/nacos", nacosServer) 24 } 25 26 func TestLoad_test(t *testing.T) { 27 defer os.Clearenv() 28 _ = os.Chdir("testdata") 29 yaml.Load("test") 30 port := os.Getenv("GDD_PORT") 31 require.Equal(t, "6060", port) 32 33 nacosServer := os.Getenv("GDD_NACOS_SERVER_ADDR") 34 require.Equal(t, "", nacosServer) 35 36 rootPath := os.Getenv("GDD_ROUTE_ROOT_PATH") 37 require.Equal(t, "/api", rootPath) 38 } 39 40 func TestLoad_error(t *testing.T) { 41 defer os.Clearenv() 42 _ = os.Chdir("testdata") 43 require.Panics(t, func() { 44 yaml.Load("prod") 45 }) 46 } 47 48 func TestLoadReaderAsMap(t *testing.T) { 49 defer os.Clearenv() 50 _ = os.Chdir("testdata") 51 data, err := ioutil.ReadFile("app.yml") 52 require.NoError(t, err) 53 result, err := yaml.LoadReaderAsMap(strings.NewReader(string(data))) 54 require.NoError(t, err) 55 require.Equal(t, float64(6060), result["gdd.port"]) 56 require.Equal(t, "go-doudou", result["gdd.tracing.metrics.root"]) 57 } 58 59 func TestLoadFileAsMap(t *testing.T) { 60 defer os.Clearenv() 61 _ = os.Chdir("testdata") 62 result, err := yaml.LoadFileAsMap("app.yml") 63 require.NoError(t, err) 64 require.Equal(t, float64(6060), result["gdd.port"]) 65 require.Equal(t, "go-doudou", result["gdd.tracing.metrics.root"]) 66 } 67 68 func TestLoadReaderAsMapError(t *testing.T) { 69 defer os.Clearenv() 70 _, err := yaml.LoadReaderAsMap(ErrReader(errors.New("test error"))) 71 require.Error(t, err) 72 } 73 74 func TestLoadFileAsMapDotenvError(t *testing.T) { 75 defer os.Clearenv() 76 _ = os.Chdir("testdata") 77 _, err := yaml.LoadFileAsMap(".env") 78 require.Error(t, err) 79 } 80 81 func TestLoadReaderAsMapDotenvError(t *testing.T) { 82 defer os.Clearenv() 83 _ = os.Chdir("testdata") 84 data, err := ioutil.ReadFile(".env") 85 require.NoError(t, err) 86 _, err = yaml.LoadReaderAsMap(strings.NewReader(string(data))) 87 require.Error(t, err) 88 } 89 90 func TestLoadFileAsMapError(t *testing.T) { 91 defer os.Clearenv() 92 _, err := yaml.LoadFileAsMap("not_exist_file") 93 require.Error(t, err) 94 } 95 96 func TestLoadReaderAsMapFromString(t *testing.T) { 97 defer os.Clearenv() 98 data := []byte("gdd:\n port: 6060\n tracing:\n metrics:\n root: \"go-doudou\"") 99 result, err := yaml.LoadReaderAsMap(strings.NewReader(string(data))) 100 require.NoError(t, err) 101 require.Equal(t, float64(6060), result["gdd.port"]) 102 require.Equal(t, "go-doudou", result["gdd.tracing.metrics.root"]) 103 } 104 105 func TestLoadReader(t *testing.T) { 106 defer os.Clearenv() 107 _ = os.Chdir("testdata") 108 data, err := ioutil.ReadFile("app.yml") 109 require.NoError(t, err) 110 err = yaml.LoadReader(bytes.NewReader(data)) 111 require.NoError(t, err) 112 require.Equal(t, "6060", os.Getenv("GDD_PORT")) 113 require.Equal(t, "go-doudou", os.Getenv("GDD_TRACING_METRICS_ROOT")) 114 } 115 116 func ErrReader(err error) io.Reader { 117 return &errReader{err: err} 118 } 119 120 type errReader struct { 121 err error 122 } 123 124 func (r *errReader) Read(p []byte) (int, error) { 125 return 0, r.err 126 } 127 128 func TestLoadReaderError(t *testing.T) { 129 err := yaml.LoadReader(ErrReader(errors.New("test error"))) 130 require.Error(t, err) 131 } 132 133 func TestLoadReaderDotenvError(t *testing.T) { 134 _ = os.Chdir("testdata") 135 data, err := ioutil.ReadFile(".env") 136 require.NoError(t, err) 137 err = yaml.LoadReader(bytes.NewReader(data)) 138 require.Error(t, err) 139 }