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  }