github.com/annwntech/go-micro/v2@v2.9.5/config/source/flag/flag_test.go (about) 1 package flag 2 3 import ( 4 "encoding/json" 5 "flag" 6 "testing" 7 ) 8 9 var ( 10 dbuser = flag.String("database-user", "default", "db user") 11 dbhost = flag.String("database-host", "", "db host") 12 dbpw = flag.String("database-password", "", "db pw") 13 ) 14 15 func initTestFlags() { 16 flag.Set("database-host", "localhost") 17 flag.Set("database-password", "some-password") 18 flag.Parse() 19 } 20 21 func TestFlagsrc_Read(t *testing.T) { 22 initTestFlags() 23 source := NewSource() 24 c, err := source.Read() 25 if err != nil { 26 t.Error(err) 27 } 28 29 var actual map[string]interface{} 30 if err := json.Unmarshal(c.Data, &actual); err != nil { 31 t.Error(err) 32 } 33 34 actualDB := actual["database"].(map[string]interface{}) 35 if actualDB["host"] != *dbhost { 36 t.Errorf("expected %v got %v", *dbhost, actualDB["host"]) 37 } 38 39 if actualDB["password"] != *dbpw { 40 t.Errorf("expected %v got %v", *dbpw, actualDB["password"]) 41 } 42 43 // unset flags should not be loaded 44 if actualDB["user"] != nil { 45 t.Errorf("expected %v got %v", nil, actualDB["user"]) 46 } 47 } 48 49 func TestFlagsrc_ReadAll(t *testing.T) { 50 initTestFlags() 51 source := NewSource(IncludeUnset(true)) 52 c, err := source.Read() 53 if err != nil { 54 t.Error(err) 55 } 56 57 var actual map[string]interface{} 58 if err := json.Unmarshal(c.Data, &actual); err != nil { 59 t.Error(err) 60 } 61 62 actualDB := actual["database"].(map[string]interface{}) 63 64 // unset flag defaults should be loaded 65 if actualDB["user"] != *dbuser { 66 t.Errorf("expected %v got %v", *dbuser, actualDB["user"]) 67 } 68 }