fix: httpx.ParseJsonBody error when request has []byte field #4450 (#4471)

This commit is contained in:
Devin
2025-01-22 21:35:32 +08:00
committed by GitHub
parent 238c92aaa9
commit cbcacf31c1
2 changed files with 29 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ package httpx
import (
"bytes"
"encoding/json"
"errors"
"net/http"
"net/http/httptest"
@@ -515,6 +516,25 @@ func TestParseJsonBody(t *testing.T) {
assert.Equal(t, "apple", v[0].Name)
assert.Equal(t, 18, v[0].Age)
})
t.Run("bytes field", func(t *testing.T) {
type v struct {
Signature []byte `json:"signature,optional"`
}
v1 := v{
Signature: []byte{0x01, 0xff, 0x00},
}
body, _ := json.Marshal(v1)
t.Logf("body:%s", string(body))
r := httptest.NewRequest(http.MethodPost, "/", strings.NewReader(string(body)))
r.Header.Set(ContentType, header.JsonContentType)
var v2 v
err := ParseJsonBody(r, &v2)
if assert.NoError(t, err) {
assert.Greater(t, len(v2.Signature), 0)
}
t.Logf("%x", v2.Signature)
assert.EqualValues(t, v1.Signature, v2.Signature)
})
}
func TestParseRequired(t *testing.T) {