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 }