go test -run Test_Bind_Header_Schema -v
(t *testing.T)
| 842 | |
| 843 | // go test -run Test_Bind_Header_Schema -v |
| 844 | func Test_Bind_Header_Schema(t *testing.T) { |
| 845 | t.Parallel() |
| 846 | app := New() |
| 847 | c := app.AcquireCtx(&fasthttp.RequestCtx{}) |
| 848 | |
| 849 | type Header1 struct { |
| 850 | Name string `header:"Name,required"` |
| 851 | Nested struct { |
| 852 | Age int `header:"Age"` |
| 853 | } `header:"Nested,required"` |
| 854 | } |
| 855 | c.Request().SetBody([]byte(``)) |
| 856 | c.Request().Header.SetContentType("") |
| 857 | |
| 858 | c.Request().Header.Add("Name", "tom") |
| 859 | c.Request().Header.Add("Nested.Age", "10") |
| 860 | q := new(Header1) |
| 861 | require.NoError(t, c.Bind().Header(q)) |
| 862 | |
| 863 | c.Request().Header.Del("Name") |
| 864 | q = new(Header1) |
| 865 | err := c.Bind().Header(q) |
| 866 | require.Error(t, err) |
| 867 | require.Equal(t, "bind \"Name\" from header: Name is empty", err.Error()) |
| 868 | require.ErrorAs(t, err, &MultiError{}) |
| 869 | |
| 870 | c.Request().Header.Add("Name", "tom") |
| 871 | c.Request().Header.Del("Nested.Age") |
| 872 | c.Request().Header.Add("Nested.Agex", "10") |
| 873 | q = new(Header1) |
| 874 | require.NoError(t, c.Bind().Header(q)) |
| 875 | |
| 876 | c.Request().Header.Del("Nested.Agex") |
| 877 | q = new(Header1) |
| 878 | err = c.Bind().Header(q) |
| 879 | require.Error(t, err) |
| 880 | require.Equal(t, "bind \"Nested\" from header: Nested is empty", err.Error()) |
| 881 | require.ErrorAs(t, err, &MultiError{}) |
| 882 | |
| 883 | c.Request().Header.Del("Nested.Agex") |
| 884 | c.Request().Header.Del("Name") |
| 885 | |
| 886 | type Header2 struct { |
| 887 | Name string `header:"Name"` |
| 888 | Nested struct { |
| 889 | Age int `header:"age,required"` |
| 890 | } `header:"Nested"` |
| 891 | } |
| 892 | |
| 893 | c.Request().Header.Add("Name", "tom") |
| 894 | c.Request().Header.Add("Nested.Age", "10") |
| 895 | |
| 896 | h2 := new(Header2) |
| 897 | require.NoError(t, c.Bind().Header(h2)) |
| 898 | |
| 899 | c.Request().Header.Del("Name") |
| 900 | h2 = new(Header2) |
| 901 | require.NoError(t, c.Bind().Header(h2)) |