420 lines
9.3 KiB
Go
420 lines
9.3 KiB
Go
|
package types
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestStatusCodesSet(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
value string
|
||
|
expected StatusCodes
|
||
|
}{
|
||
|
{
|
||
|
desc: "One value should return StatusCodes of size 1",
|
||
|
value: "200",
|
||
|
expected: StatusCodes{"200"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Two values separated by comma should return StatusCodes of size 2",
|
||
|
value: "200,400",
|
||
|
expected: StatusCodes{"200", "400"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Two values separated by semicolon should return StatusCodes of size 2",
|
||
|
value: "200;400",
|
||
|
expected: StatusCodes{"200", "400"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Three values separated by comma and semicolon should return StatusCodes of size 3",
|
||
|
value: "200,400;500",
|
||
|
expected: StatusCodes{"200", "400", "500"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var statusCodes StatusCodes
|
||
|
err := statusCodes.Set(test.value)
|
||
|
assert.Nil(t, err)
|
||
|
assert.Equal(t, test.expected, statusCodes)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestStatusCodesGet(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values StatusCodes
|
||
|
expected StatusCodes
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: StatusCodes{"200"},
|
||
|
expected: StatusCodes{"200"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 2 values",
|
||
|
values: StatusCodes{"200", "400"},
|
||
|
expected: StatusCodes{"200", "400"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 3 values",
|
||
|
values: StatusCodes{"200", "400", "500"},
|
||
|
expected: StatusCodes{"200", "400", "500"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
actual := test.values.Get()
|
||
|
assert.Equal(t, test.expected, actual)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestStatusCodesString(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values StatusCodes
|
||
|
expected string
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: StatusCodes{"200"},
|
||
|
expected: "[200]",
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 2 values",
|
||
|
values: StatusCodes{"200", "400"},
|
||
|
expected: "[200 400]",
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 3 values",
|
||
|
values: StatusCodes{"200", "400", "500"},
|
||
|
expected: "[200 400 500]",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
actual := test.values.String()
|
||
|
assert.Equal(t, test.expected, actual)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestStatusCodesSetValue(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values StatusCodes
|
||
|
expected StatusCodes
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: StatusCodes{"200"},
|
||
|
expected: StatusCodes{"200"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 2 values",
|
||
|
values: StatusCodes{"200", "400"},
|
||
|
expected: StatusCodes{"200", "400"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 3 values",
|
||
|
values: StatusCodes{"200", "400", "500"},
|
||
|
expected: StatusCodes{"200", "400", "500"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var slice StatusCodes
|
||
|
slice.SetValue(test.values)
|
||
|
assert.Equal(t, test.expected, slice)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFieldsNamesSet(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
value string
|
||
|
expected *FieldNames
|
||
|
}{
|
||
|
{
|
||
|
desc: "One value should return FieldNames of size 1",
|
||
|
value: "field-1=foo",
|
||
|
expected: &FieldNames{
|
||
|
"field-1": "foo",
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
desc: "Two values separated by space should return FieldNames of size 2",
|
||
|
value: "field-1=foo field-2=bar",
|
||
|
expected: &FieldNames{
|
||
|
"field-1": "foo",
|
||
|
"field-2": "bar",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
fieldsNames := &FieldNames{}
|
||
|
err := fieldsNames.Set(test.value)
|
||
|
assert.NoError(t, err)
|
||
|
|
||
|
assert.Equal(t, test.expected, fieldsNames)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFieldsNamesGet(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values FieldNames
|
||
|
expected FieldNames
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: FieldNames{"field-1": "foo"},
|
||
|
expected: FieldNames{"field-1": "foo"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 2 values",
|
||
|
values: FieldNames{"field-1": "foo", "field-2": "bar"},
|
||
|
expected: FieldNames{"field-1": "foo", "field-2": "bar"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 3 values",
|
||
|
values: FieldNames{"field-1": "foo", "field-2": "bar", "field-3": "powpow"},
|
||
|
expected: FieldNames{"field-1": "foo", "field-2": "bar", "field-3": "powpow"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
actual := test.values.Get()
|
||
|
assert.Equal(t, test.expected, actual)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFieldsNamesString(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values FieldNames
|
||
|
expected string
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: FieldNames{"field-1": "foo"},
|
||
|
expected: "map[field-1:foo]",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
actual := test.values.String()
|
||
|
assert.Equal(t, test.expected, actual)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFieldsNamesSetValue(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values FieldNames
|
||
|
expected *FieldNames
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: FieldNames{"field-1": "foo"},
|
||
|
expected: &FieldNames{"field-1": "foo"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 2 values",
|
||
|
values: FieldNames{"field-1": "foo", "field-2": "bar"},
|
||
|
expected: &FieldNames{"field-1": "foo", "field-2": "bar"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 3 values",
|
||
|
values: FieldNames{"field-1": "foo", "field-2": "bar", "field-3": "powpow"},
|
||
|
expected: &FieldNames{"field-1": "foo", "field-2": "bar", "field-3": "powpow"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
fieldsNames := &FieldNames{}
|
||
|
fieldsNames.SetValue(test.values)
|
||
|
assert.Equal(t, test.expected, fieldsNames)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFieldsHeadersNamesSet(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
value string
|
||
|
expected *FieldHeaderNames
|
||
|
}{
|
||
|
{
|
||
|
desc: "One value should return FieldNames of size 1",
|
||
|
value: "X-HEADER-1=foo",
|
||
|
expected: &FieldHeaderNames{
|
||
|
"X-HEADER-1": "foo",
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
desc: "Two values separated by space should return FieldNames of size 2",
|
||
|
value: "X-HEADER-1=foo X-HEADER-2=bar",
|
||
|
expected: &FieldHeaderNames{
|
||
|
"X-HEADER-1": "foo",
|
||
|
"X-HEADER-2": "bar",
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
desc: "Two values separated by space with escaped double quotes should return FieldNames of size 2",
|
||
|
value: "\"X-HEADER-1=foo X-HEADER-2=bar\"",
|
||
|
expected: &FieldHeaderNames{
|
||
|
"X-HEADER-1": "foo",
|
||
|
"X-HEADER-2": "bar",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
headersNames := &FieldHeaderNames{}
|
||
|
err := headersNames.Set(test.value)
|
||
|
assert.NoError(t, err)
|
||
|
|
||
|
assert.Equal(t, test.expected, headersNames)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFieldsHeadersNamesGet(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values FieldHeaderNames
|
||
|
expected FieldHeaderNames
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: FieldHeaderNames{"X-HEADER-1": "foo"},
|
||
|
expected: FieldHeaderNames{"X-HEADER-1": "foo"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 2 values",
|
||
|
values: FieldHeaderNames{"X-HEADER-1": "foo", "X-HEADER-2": "bar"},
|
||
|
expected: FieldHeaderNames{"X-HEADER-1": "foo", "X-HEADER-2": "bar"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 3 values",
|
||
|
values: FieldHeaderNames{"X-HEADER-1": "foo", "X-HEADER-2": "bar", "X-HEADER-3": "powpow"},
|
||
|
expected: FieldHeaderNames{"X-HEADER-1": "foo", "X-HEADER-2": "bar", "X-HEADER-3": "powpow"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
actual := test.values.Get()
|
||
|
assert.Equal(t, test.expected, actual)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFieldsHeadersNamesString(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values FieldHeaderNames
|
||
|
expected string
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: FieldHeaderNames{"X-HEADER-1": "foo"},
|
||
|
expected: "map[X-HEADER-1:foo]",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
actual := test.values.String()
|
||
|
assert.Equal(t, test.expected, actual)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFieldsHeadersNamesSetValue(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
values FieldHeaderNames
|
||
|
expected *FieldHeaderNames
|
||
|
}{
|
||
|
{
|
||
|
desc: "Should return 1 value",
|
||
|
values: FieldHeaderNames{"X-HEADER-1": "foo"},
|
||
|
expected: &FieldHeaderNames{"X-HEADER-1": "foo"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 2 values",
|
||
|
values: FieldHeaderNames{"X-HEADER-1": "foo", "X-HEADER-2": "bar"},
|
||
|
expected: &FieldHeaderNames{"X-HEADER-1": "foo", "X-HEADER-2": "bar"},
|
||
|
},
|
||
|
{
|
||
|
desc: "Should return 3 values",
|
||
|
values: FieldHeaderNames{"X-HEADER-1": "foo", "X-HEADER-2": "bar", "X-HEADER-3": "powpow"},
|
||
|
expected: &FieldHeaderNames{"X-HEADER-1": "foo", "X-HEADER-2": "bar", "X-HEADER-3": "powpow"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
headersNames := &FieldHeaderNames{}
|
||
|
headersNames.SetValue(test.values)
|
||
|
assert.Equal(t, test.expected, headersNames)
|
||
|
})
|
||
|
}
|
||
|
}
|