parser_test.go 970 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package encoding
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestParseHeaders(t *testing.T) {
  9. var val struct {
  10. Foo string `header:"foo"`
  11. Baz int `header:"baz"`
  12. Qux bool `header:"qux,default=true"`
  13. }
  14. r := httptest.NewRequest(http.MethodGet, "/any", nil)
  15. r.Header.Set("foo", "bar")
  16. r.Header.Set("baz", "1")
  17. assert.Nil(t, ParseHeaders(r.Header, &val))
  18. assert.Equal(t, "bar", val.Foo)
  19. assert.Equal(t, 1, val.Baz)
  20. assert.True(t, val.Qux)
  21. }
  22. func TestParseHeadersMulti(t *testing.T) {
  23. var val struct {
  24. Foo []string `header:"foo"`
  25. Baz int `header:"baz"`
  26. Qux bool `header:"qux,default=true"`
  27. }
  28. r := httptest.NewRequest(http.MethodGet, "/any", nil)
  29. r.Header.Set("foo", "bar")
  30. r.Header.Add("foo", "bar1")
  31. r.Header.Set("baz", "1")
  32. assert.Nil(t, ParseHeaders(r.Header, &val))
  33. assert.Equal(t, []string{"bar", "bar1"}, val.Foo)
  34. assert.Equal(t, 1, val.Baz)
  35. assert.True(t, val.Qux)
  36. }