|
@@ -91,6 +91,10 @@ type FooStructForSliceMapType struct {
|
|
|
SliceMapFoo []map[string]interface{} `form:"slice_map_foo"`
|
|
SliceMapFoo []map[string]interface{} `form:"slice_map_foo"`
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+type FooStructForBoolType struct {
|
|
|
|
|
+ BoolFoo bool `form:"bool_foo"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type FooBarStructForIntType struct {
|
|
type FooBarStructForIntType struct {
|
|
|
IntFoo int `form:"int_foo"`
|
|
IntFoo int `form:"int_foo"`
|
|
|
IntBar int `form:"int_bar" binding:"required"`
|
|
IntBar int `form:"int_bar" binding:"required"`
|
|
@@ -449,6 +453,12 @@ func TestBindingQueryFail2(t *testing.T) {
|
|
|
"map_foo=unused", "")
|
|
"map_foo=unused", "")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func TestBindingQueryBoolFail(t *testing.T) {
|
|
|
|
|
+ testQueryBindingBoolFail(t, "GET",
|
|
|
|
|
+ "/?bool_foo=fasl", "/?bar2=foo",
|
|
|
|
|
+ "bool_foo=unused", "")
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func TestBindingXML(t *testing.T) {
|
|
func TestBindingXML(t *testing.T) {
|
|
|
testBodyBinding(t,
|
|
testBodyBinding(t,
|
|
|
XML, "xml",
|
|
XML, "xml",
|
|
@@ -1063,6 +1073,19 @@ func testQueryBindingFail(t *testing.T, method, path, badPath, body, badBody str
|
|
|
assert.Error(t, err)
|
|
assert.Error(t, err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func testQueryBindingBoolFail(t *testing.T, method, path, badPath, body, badBody string) {
|
|
|
|
|
+ b := Query
|
|
|
|
|
+ assert.Equal(t, "query", b.Name())
|
|
|
|
|
+
|
|
|
|
|
+ obj := FooStructForBoolType{}
|
|
|
|
|
+ req := requestWithBody(method, path, body)
|
|
|
|
|
+ if method == "POST" {
|
|
|
|
|
+ req.Header.Add("Content-Type", MIMEPOSTForm)
|
|
|
|
|
+ }
|
|
|
|
|
+ err := b.Bind(req, &obj)
|
|
|
|
|
+ assert.Error(t, err)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func testBodyBinding(t *testing.T, b Binding, name, path, badPath, body, badBody string) {
|
|
func testBodyBinding(t *testing.T, b Binding, name, path, badPath, body, badBody string) {
|
|
|
assert.Equal(t, name, b.Name())
|
|
assert.Equal(t, name, b.Name())
|
|
|
|
|
|