mirror of
https://github.com/labstack/echo.git
synced 2025-07-03 00:56:59 +02:00
Fix #1858: Add query params binding support for anonymous struct pointer filed
This commit is contained in:
45
bind_test.go
45
bind_test.go
@ -100,6 +100,9 @@ type (
|
||||
Struct struct {
|
||||
Foo string
|
||||
}
|
||||
Bar struct {
|
||||
Baz int `json:"baz" query:"baz"`
|
||||
}
|
||||
)
|
||||
|
||||
func (t *Timestamp) UnmarshalParam(src string) error {
|
||||
@ -330,6 +333,48 @@ func TestBindUnmarshalParamPtr(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBindUnmarshalParamAnonymousFieldPtr(t *testing.T) {
|
||||
e := New()
|
||||
req := httptest.NewRequest(http.MethodGet, "/?baz=1", nil)
|
||||
rec := httptest.NewRecorder()
|
||||
c := e.NewContext(req, rec)
|
||||
result := struct {
|
||||
*Bar
|
||||
}{&Bar{}}
|
||||
err := c.Bind(&result)
|
||||
if assert.NoError(t, err) {
|
||||
assert.Equal(t, 1, result.Baz)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBindUnmarshalParamAnonymousFieldPtrNil(t *testing.T) {
|
||||
e := New()
|
||||
req := httptest.NewRequest(http.MethodGet, "/?baz=1", nil)
|
||||
rec := httptest.NewRecorder()
|
||||
c := e.NewContext(req, rec)
|
||||
result := struct {
|
||||
*Bar
|
||||
}{}
|
||||
err := c.Bind(&result)
|
||||
if assert.NoError(t, err) {
|
||||
assert.Nil(t, result.Bar)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBindUnmarshalParamAnonymousFieldPtrCustomTag(t *testing.T) {
|
||||
e := New()
|
||||
req := httptest.NewRequest(http.MethodGet, `/?bar={"baz":100}&baz=1`, nil)
|
||||
rec := httptest.NewRecorder()
|
||||
c := e.NewContext(req, rec)
|
||||
result := struct {
|
||||
*Bar `json:"bar" query:"bar"`
|
||||
}{&Bar{}}
|
||||
err := c.Bind(&result)
|
||||
if assert.NoError(t, err) {
|
||||
assert.Equal(t, 1, result.Baz)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBindUnmarshalTextPtr(t *testing.T) {
|
||||
e := New()
|
||||
req := httptest.NewRequest(GET, "/?ts=2016-12-06T19:09:05Z", nil)
|
||||
|
Reference in New Issue
Block a user