47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package tunnel
|
|
|
|
import (
|
|
"testing"
|
|
|
|
tunnelpogs "github.com/cloudflare/cloudflared/tunnelrpc/pogs"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSingleTag(t *testing.T) {
|
|
testCases := []struct {
|
|
Input string
|
|
Output tunnelpogs.Tag
|
|
Fail bool
|
|
}{
|
|
{Input: "x=y", Output: tunnelpogs.Tag{Name: "x", Value: "y"}},
|
|
{Input: "More-Complex=Tag Values", Output: tunnelpogs.Tag{Name: "More-Complex", Value: "Tag Values"}},
|
|
{Input: "First=Equals=Wins", Output: tunnelpogs.Tag{Name: "First", Value: "Equals=Wins"}},
|
|
{Input: "x=", Fail: true},
|
|
{Input: "=y", Fail: true},
|
|
{Input: "=", Fail: true},
|
|
{Input: "No spaces allowed=in key names", Fail: true},
|
|
{Input: "omg\nwtf=bbq", Fail: true},
|
|
}
|
|
for i, testCase := range testCases {
|
|
tag, ok := NewTagFromCLI(testCase.Input)
|
|
assert.Equalf(t, !testCase.Fail, ok, "mismatched success for test case %d", i)
|
|
assert.Equalf(t, testCase.Output, tag, "mismatched output for test case %d", i)
|
|
}
|
|
}
|
|
|
|
func TestTagSlice(t *testing.T) {
|
|
tagSlice, err := NewTagSliceFromCLI([]string{"a=b", "c=d", "e=f"})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, tagSlice, 3)
|
|
assert.Equal(t, "a", tagSlice[0].Name)
|
|
assert.Equal(t, "b", tagSlice[0].Value)
|
|
assert.Equal(t, "c", tagSlice[1].Name)
|
|
assert.Equal(t, "d", tagSlice[1].Value)
|
|
assert.Equal(t, "e", tagSlice[2].Name)
|
|
assert.Equal(t, "f", tagSlice[2].Value)
|
|
|
|
tagSlice, err = NewTagSliceFromCLI([]string{"a=b", "=", "e=f"})
|
|
assert.Error(t, err)
|
|
}
|