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  }