allow ignoring field on form mapping (#1733)
This commit is contained in:
		| @ -61,6 +61,10 @@ type FooStructForMapType struct { | ||||
| 	MapFoo map[string]interface{} `form:"map_foo"` | ||||
| } | ||||
|  | ||||
| type FooStructForIgnoreFormTag struct { | ||||
| 	Foo *string `form:"-"` | ||||
| } | ||||
|  | ||||
| type InvalidNameType struct { | ||||
| 	TestName string `invalid_name:"test_name"` | ||||
| } | ||||
| @ -278,6 +282,12 @@ func TestBindingFormForTime2(t *testing.T) { | ||||
| 		"", "") | ||||
| } | ||||
|  | ||||
| func TestFormBindingIgnoreField(t *testing.T) { | ||||
| 	testFormBindingIgnoreField(t, "POST", | ||||
| 		"/", "/", | ||||
| 		"-=bar", "") | ||||
| } | ||||
|  | ||||
| func TestBindingFormInvalidName(t *testing.T) { | ||||
| 	testFormBindingInvalidName(t, "POST", | ||||
| 		"/", "/", | ||||
| @ -860,6 +870,21 @@ func testFormBindingForTimeFailLocation(t *testing.T, method, path, badPath, bod | ||||
| 	assert.Error(t, err) | ||||
| } | ||||
|  | ||||
| func testFormBindingIgnoreField(t *testing.T, method, path, badPath, body, badBody string) { | ||||
| 	b := Form | ||||
| 	assert.Equal(t, "form", b.Name()) | ||||
|  | ||||
| 	obj := FooStructForIgnoreFormTag{} | ||||
| 	req := requestWithBody(method, path, body) | ||||
| 	if method == "POST" { | ||||
| 		req.Header.Add("Content-Type", MIMEPOSTForm) | ||||
| 	} | ||||
| 	err := b.Bind(req, &obj) | ||||
| 	assert.NoError(t, err) | ||||
|  | ||||
| 	assert.Nil(t, obj.Foo) | ||||
| } | ||||
|  | ||||
| func testFormBindingInvalidName(t *testing.T, method, path, badPath, body, badBody string) { | ||||
| 	b := Form | ||||
| 	assert.Equal(t, "form", b.Name()) | ||||
|  | ||||
| @ -41,6 +41,9 @@ func mapFormByTag(ptr interface{}, form map[string][]string, tag string) error { | ||||
| 				defaultValue = defaultList[1] | ||||
| 			} | ||||
| 		} | ||||
| 		if inputFieldName == "-" { | ||||
| 			continue | ||||
| 		} | ||||
| 		if inputFieldName == "" { | ||||
| 			inputFieldName = typeField.Name | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user