(t *testing.T)
| 125 | } |
| 126 | |
| 127 | func Test_BindError_FieldExtraction(t *testing.T) { |
| 128 | t.Parallel() |
| 129 | |
| 130 | t.Run("QueryConversionError", func(t *testing.T) { |
| 131 | t.Parallel() |
| 132 | type Q struct { |
| 133 | ID int `query:"id"` |
| 134 | } |
| 135 | app := New() |
| 136 | c := app.AcquireCtx(&fasthttp.RequestCtx{}) |
| 137 | t.Cleanup(func() { app.ReleaseCtx(c) }) |
| 138 | c.Request().URI().SetQueryString("id=notanint") |
| 139 | err := c.Bind().Query(new(Q)) |
| 140 | require.Error(t, err) |
| 141 | var be *BindError |
| 142 | require.ErrorAs(t, err, &be) |
| 143 | require.Equal(t, BindSourceQuery, be.Source) |
| 144 | require.Equal(t, "id", be.Field) |
| 145 | require.ErrorAs(t, err, &MultiError{}) |
| 146 | }) |
| 147 | |
| 148 | t.Run("ConversionError", func(t *testing.T) { |
| 149 | t.Parallel() |
| 150 | convErrBinder := &customBinderReturningError{ |
| 151 | err: schema.ConversionError{Key: "count"}, |
| 152 | mimeType: "application/x-conversion-error-test", |
| 153 | } |
| 154 | app := New() |
| 155 | app.RegisterCustomBinder(convErrBinder) |
| 156 | c := app.AcquireCtx(&fasthttp.RequestCtx{}) |
| 157 | t.Cleanup(func() { app.ReleaseCtx(c) }) |
| 158 | c.Request().SetBody([]byte("{}")) |
| 159 | c.Request().Header.SetContentType("application/x-conversion-error-test") |
| 160 | type D struct{ Name string } |
| 161 | err := c.Bind().Body(new(D)) |
| 162 | require.Error(t, err) |
| 163 | var be *BindError |
| 164 | require.ErrorAs(t, err, &be) |
| 165 | require.Equal(t, BindSourceBody, be.Source) |
| 166 | require.Equal(t, "count", be.Field) |
| 167 | }) |
| 168 | |
| 169 | t.Run("JSONUnmarshalTypeError", func(t *testing.T) { |
| 170 | t.Parallel() |
| 171 | type J struct { |
| 172 | Count int `json:"count"` |
| 173 | } |
| 174 | app := New() |
| 175 | c := app.AcquireCtx(&fasthttp.RequestCtx{}) |
| 176 | t.Cleanup(func() { app.ReleaseCtx(c) }) |
| 177 | c.Request().SetBody([]byte(`{"count":"notanint"}`)) |
| 178 | c.Request().Header.SetContentType(MIMEApplicationJSON) |
| 179 | err := c.Bind().Body(new(J)) |
| 180 | require.Error(t, err) |
| 181 | var be *BindError |
| 182 | require.ErrorAs(t, err, &be) |
| 183 | require.Equal(t, BindSourceBody, be.Source) |
| 184 | require.Equal(t, "count", be.Field) |
nothing calls this directly
no test coverage detected