(t *testing.T)
| 816 | } |
| 817 | |
| 818 | func TestContextQueryAndPostForm(t *testing.T) { |
| 819 | c, _ := CreateTestContext(httptest.NewRecorder()) |
| 820 | body := strings.NewReader("foo=bar&page=11&both=&foo=second") |
| 821 | c.Request, _ = http.NewRequest(http.MethodPost, |
| 822 | "/?both=GET&id=main&id=omit&array[]=first&array[]=second&ids[a]=hi&ids[b]=3.14", body) |
| 823 | c.Request.Header.Add("Content-Type", MIMEPOSTForm) |
| 824 | |
| 825 | assert.Equal(t, "bar", c.DefaultPostForm("foo", "none")) |
| 826 | assert.Equal(t, "bar", c.PostForm("foo")) |
| 827 | assert.Empty(t, c.Query("foo")) |
| 828 | |
| 829 | value, ok := c.GetPostForm("page") |
| 830 | assert.True(t, ok) |
| 831 | assert.Equal(t, "11", value) |
| 832 | assert.Equal(t, "11", c.DefaultPostForm("page", "0")) |
| 833 | assert.Equal(t, "11", c.PostForm("page")) |
| 834 | assert.Empty(t, c.Query("page")) |
| 835 | |
| 836 | value, ok = c.GetPostForm("both") |
| 837 | assert.True(t, ok) |
| 838 | assert.Empty(t, value) |
| 839 | assert.Empty(t, c.PostForm("both")) |
| 840 | assert.Empty(t, c.DefaultPostForm("both", "nothing")) |
| 841 | assert.Equal(t, http.MethodGet, c.Query("both"), http.MethodGet) |
| 842 | |
| 843 | value, ok = c.GetQuery("id") |
| 844 | assert.True(t, ok) |
| 845 | assert.Equal(t, "main", value) |
| 846 | assert.Equal(t, "000", c.DefaultPostForm("id", "000")) |
| 847 | assert.Equal(t, "main", c.Query("id")) |
| 848 | assert.Empty(t, c.PostForm("id")) |
| 849 | |
| 850 | value, ok = c.GetQuery("NoKey") |
| 851 | assert.False(t, ok) |
| 852 | assert.Empty(t, value) |
| 853 | value, ok = c.GetPostForm("NoKey") |
| 854 | assert.False(t, ok) |
| 855 | assert.Empty(t, value) |
| 856 | assert.Equal(t, "nada", c.DefaultPostForm("NoKey", "nada")) |
| 857 | assert.Equal(t, "nothing", c.DefaultQuery("NoKey", "nothing")) |
| 858 | assert.Empty(t, c.PostForm("NoKey")) |
| 859 | assert.Empty(t, c.Query("NoKey")) |
| 860 | |
| 861 | var obj struct { |
| 862 | Foo string `form:"foo"` |
| 863 | ID string `form:"id"` |
| 864 | Page int `form:"page"` |
| 865 | Both string `form:"both"` |
| 866 | Array []string `form:"array[]"` |
| 867 | } |
| 868 | require.NoError(t, c.Bind(&obj)) |
| 869 | assert.Equal(t, "bar", obj.Foo, "bar") |
| 870 | assert.Equal(t, "main", obj.ID, "main") |
| 871 | assert.Equal(t, 11, obj.Page, 11) |
| 872 | assert.Empty(t, obj.Both) |
| 873 | assert.Equal(t, []string{"first", "second"}, obj.Array) |
| 874 | |
| 875 | values, ok := c.GetQueryArray("array[]") |
nothing calls this directly
no test coverage detected