github.com/42z-io/confik@v0.0.2-0.20231103050132-21d8f377356c/tag_test.go (about) 1 package confik 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestParseSetting(t *testing.T) { 10 _, _, err := parseSetting("hello") 11 if assert.Error(t, err) { 12 assert.Equal(t, "invalid setting hello: invalid syntax", err.Error()) 13 } 14 15 key, value, err := parseSetting("hello=world") 16 assert.Nil(t, err) 17 assert.Equal(t, "hello", key) 18 assert.Equal(t, "world", value) 19 } 20 21 func TestParseTag(t *testing.T) { 22 _, err := parseTag("") 23 if assert.Error(t, err) { 24 assert.Equal(t, "invalid tag: empty tag", err.Error()) 25 } 26 _, err = parseTag("hello,flag1,flag2,option==") 27 if assert.Error(t, err) { 28 assert.Equal(t, "invalid tag: invalid setting option==: invalid syntax", err.Error()) 29 } 30 tag, err := parseTag("name,flag1,flag2,option1=opt1,option2=opt2") 31 assert.Nil(t, err) 32 assert.Equal(t, "name", tag.Name) 33 assert.Equal(t, []string{"flag1", "flag2"}, tag.Flags) 34 assert.Equal(t, map[string]string{"option1": "opt1", "option2": "opt2"}, tag.Settings) 35 } 36 37 func TestParseEnvTag(t *testing.T) { 38 _, err := parseEnvTag("") 39 if assert.Error(t, err) { 40 assert.Equal(t, "invalid env tag: invalid tag: empty tag", err.Error()) 41 } 42 43 _, err = parseEnvTag("@@") 44 if assert.Error(t, err) { 45 assert.Equal(t, "invalid env tag: invalid environment variable name: @@ must be [A-Z0-9_]+", err.Error()) 46 } 47 48 _, err = parseEnvTag("NAME,flag1") 49 if assert.Error(t, err) { 50 assert.Equal(t, "invalid env tag: unknown flag flag1", err.Error()) 51 } 52 53 _, err = parseEnvTag("NAME,option1=opt1") 54 if assert.Error(t, err) { 55 assert.Equal(t, "invalid env tag: unknown setting option1", err.Error()) 56 } 57 58 tag, err := parseEnvTag("NAME,optional,unset,default=DEFAULT,validate=validator") 59 assert.Nil(t, err) 60 assert.Equal(t, "NAME", tag.Name) 61 assert.Equal(t, true, tag.Optional) 62 assert.Equal(t, true, tag.Unset) 63 assert.Equal(t, "DEFAULT", *tag.Default) 64 assert.Equal(t, "validator", *tag.Validator) 65 }