You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package encoding
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestParseHeaders(t *testing.T) {
|
|
var val struct {
|
|
Foo string `header:"foo"`
|
|
Baz int `header:"baz"`
|
|
Qux bool `header:"qux,default=true"`
|
|
}
|
|
r := httptest.NewRequest(http.MethodGet, "/any", http.NoBody)
|
|
r.Header.Set("foo", "bar")
|
|
r.Header.Set("baz", "1")
|
|
assert.Nil(t, ParseHeaders(r.Header, &val))
|
|
assert.Equal(t, "bar", val.Foo)
|
|
assert.Equal(t, 1, val.Baz)
|
|
assert.True(t, val.Qux)
|
|
}
|
|
|
|
func TestParseHeadersMulti(t *testing.T) {
|
|
var val struct {
|
|
Foo []string `header:"foo"`
|
|
Baz int `header:"baz"`
|
|
Qux bool `header:"qux,default=true"`
|
|
}
|
|
r := httptest.NewRequest(http.MethodGet, "/any", http.NoBody)
|
|
r.Header.Set("foo", "bar")
|
|
r.Header.Add("foo", "bar1")
|
|
r.Header.Set("baz", "1")
|
|
assert.Nil(t, ParseHeaders(r.Header, &val))
|
|
assert.Equal(t, []string{"bar", "bar1"}, val.Foo)
|
|
assert.Equal(t, 1, val.Baz)
|
|
assert.True(t, val.Qux)
|
|
}
|
|
|
|
func TestParseHeadersArrayInt(t *testing.T) {
|
|
var val struct {
|
|
Foo []int `header:"foo"`
|
|
}
|
|
r := httptest.NewRequest(http.MethodGet, "/any", http.NoBody)
|
|
r.Header.Set("foo", "1")
|
|
r.Header.Add("foo", "2")
|
|
assert.Nil(t, ParseHeaders(r.Header, &val))
|
|
assert.Equal(t, []int{1, 2}, val.Foo)
|
|
}
|