MCPcopy
hub / github.com/gin-gonic/gin / TestContextQueryAndPostForm

Function TestContextQueryAndPostForm

context_test.go:818–914  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

816}
817
818func 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[]")

Callers

nothing calls this directly

Calls 12

CreateTestContextFunction · 0.85
DefaultPostFormMethod · 0.80
PostFormMethod · 0.80
QueryMethod · 0.80
GetPostFormMethod · 0.80
GetQueryMethod · 0.80
DefaultQueryMethod · 0.80
GetQueryArrayMethod · 0.80
QueryArrayMethod · 0.80
GetQueryMapMethod · 0.80
QueryMapMethod · 0.80
BindMethod · 0.65

Tested by

no test coverage detected