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"` | 	MapFoo map[string]interface{} `form:"map_foo"` | ||||||
| } | } | ||||||
|  |  | ||||||
|  | type FooStructForIgnoreFormTag struct { | ||||||
|  | 	Foo *string `form:"-"` | ||||||
|  | } | ||||||
|  |  | ||||||
| type InvalidNameType struct { | type InvalidNameType struct { | ||||||
| 	TestName string `invalid_name:"test_name"` | 	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) { | func TestBindingFormInvalidName(t *testing.T) { | ||||||
| 	testFormBindingInvalidName(t, "POST", | 	testFormBindingInvalidName(t, "POST", | ||||||
| 		"/", "/", | 		"/", "/", | ||||||
| @ -860,6 +870,21 @@ func testFormBindingForTimeFailLocation(t *testing.T, method, path, badPath, bod | |||||||
| 	assert.Error(t, err) | 	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) { | func testFormBindingInvalidName(t *testing.T, method, path, badPath, body, badBody string) { | ||||||
| 	b := Form | 	b := Form | ||||||
| 	assert.Equal(t, "form", b.Name()) | 	assert.Equal(t, "form", b.Name()) | ||||||
|  | |||||||
| @ -41,6 +41,9 @@ func mapFormByTag(ptr interface{}, form map[string][]string, tag string) error { | |||||||
| 				defaultValue = defaultList[1] | 				defaultValue = defaultList[1] | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 		if inputFieldName == "-" { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
| 		if inputFieldName == "" { | 		if inputFieldName == "" { | ||||||
| 			inputFieldName = typeField.Name | 			inputFieldName = typeField.Name | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user