github.com/vseinstrumentiru/lego@v1.0.2/internal/lego/config/config_test.go (about)

     1  package config
     2  
     3  import (
     4  	"github.com/spf13/pflag"
     5  	"github.com/spf13/viper"
     6  	"github.com/stretchr/testify/assert"
     7  	"os"
     8  	"testing"
     9  )
    10  
    11  type app struct {
    12  	Name string
    13  	Some struct {
    14  		Val1 string
    15  		Val2 string
    16  	}
    17  }
    18  
    19  func (a app) Validate() error { return nil }
    20  func (a app) SetDefaults(env *viper.Viper, flag *pflag.FlagSet) {
    21  	setDefaults(env, flag)
    22  }
    23  
    24  func setDefaults(env *viper.Viper, flag *pflag.FlagSet) {
    25  	env.SetDefault("app.some.val2", "val2-default")
    26  	env.SetDefault("srv.name", "test-default")
    27  	env.SetDefault("srv.events.nats.ttt.clientid", "test")
    28  }
    29  
    30  func Test_ConfigDefaultsWithoutApp(t *testing.T) {
    31  	dir, _ := os.Getwd()
    32  	_ = os.Chdir(dir + "/test")
    33  	defer os.Chdir(dir)
    34  
    35  	ass := assert.New(t)
    36  
    37  	srv, err := Provide(nil, setDefaults)
    38  
    39  	ass.Nil(err)
    40  	ass.Equal("test", srv.Name)
    41  	ass.Equal("nats://testaddr", srv.Events.Providers.Nats["ttt"].Addr)
    42  	ass.Equal("test", srv.Events.Providers.Nats["ttt"].ClientID)
    43  }
    44  
    45  func Test_ConfigDefaultsWithNillPointerApp(t *testing.T) {
    46  	ass := assert.New(t)
    47  	var a *app
    48  	ass.Panics(func() {
    49  		Provide(a)
    50  	})
    51  }
    52  
    53  func Test_ConfigDefaultsWithPointerApp(t *testing.T) {
    54  	dir, _ := os.Getwd()
    55  	_ = os.Chdir(dir + "/test")
    56  	defer os.Chdir(dir)
    57  
    58  	ass := assert.New(t)
    59  	srv, err := Provide(&app{})
    60  
    61  	ass.Nil(err)
    62  	ass.Equal("test", srv.Name)
    63  	ass.Equal("nats://testaddr", srv.Events.Providers.Nats["ttt"].Addr)
    64  	ass.Equal("test", srv.Events.Providers.Nats["ttt"].ClientID)
    65  
    66  	ass.NotNil(srv.Custom)
    67  	ass.NotNil("app-test", srv.Custom.(*app).Name)
    68  }
    69  
    70  func Test_ConfigDefaultsWithApp(t *testing.T) {
    71  	dir, _ := os.Getwd()
    72  	_ = os.Chdir(dir + "/test")
    73  	defer os.Chdir(dir)
    74  
    75  	ass := assert.New(t)
    76  	var a app
    77  	srv, err := Provide(a)
    78  
    79  	ass.Nil(err)
    80  
    81  	ass.Equal("test", srv.Name)
    82  	ass.Equal("nats://testaddr", srv.Events.Providers.Nats["ttt"].Addr)
    83  	ass.Equal("test", srv.Events.Providers.Nats["ttt"].ClientID)
    84  
    85  	ass.NotNil(srv.Custom)
    86  	ass.NotNil("app-test", srv.Custom.(app).Name)
    87  }