lfsapi: Ensure requests include Content-Length header if necessary
This commit is contained in:
parent
5d9dc1c137
commit
1f83f952fc
@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type ReadSeekCloser interface {
|
||||
@ -18,7 +19,9 @@ func MarshalToRequest(req *http.Request, obj interface{}) error {
|
||||
return err
|
||||
}
|
||||
|
||||
req.ContentLength = int64(len(by))
|
||||
clen := len(by)
|
||||
req.Header.Set("Content-Length", strconv.Itoa(clen))
|
||||
req.ContentLength = int64(clen)
|
||||
req.Body = NewByteBody(by)
|
||||
return nil
|
||||
}
|
||||
|
@ -181,3 +181,38 @@ func TestNewRequest(t *testing.T) {
|
||||
assert.Equal(t, test[2], req.URL.String(), fmt.Sprintf("endpoint: %s, suffix: %s, expected: %s", test[0], test[1], test[2]))
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewRequestWithBody(t *testing.T) {
|
||||
c, err := NewClient(nil, TestEnv(map[string]string{
|
||||
"lfs.url": "https://example.com",
|
||||
}))
|
||||
require.Nil(t, err)
|
||||
|
||||
body := struct {
|
||||
Test string
|
||||
}{Test: "test"}
|
||||
req, err := c.NewRequest("POST", c.Endpoints.Endpoint("", ""), "body", body)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.NotNil(t, req.Body)
|
||||
assert.Equal(t, "15", req.Header.Get("Content-Length"))
|
||||
assert.EqualValues(t, 15, req.ContentLength)
|
||||
}
|
||||
|
||||
func TestMarshalToRequest(t *testing.T) {
|
||||
req, err := http.NewRequest("POST", "https://foo/bar", nil)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Nil(t, req.Body)
|
||||
assert.Equal(t, "", req.Header.Get("Content-Length"))
|
||||
assert.EqualValues(t, 0, req.ContentLength)
|
||||
|
||||
body := struct {
|
||||
Test string
|
||||
}{Test: "test"}
|
||||
require.Nil(t, MarshalToRequest(req, body))
|
||||
|
||||
assert.NotNil(t, req.Body)
|
||||
assert.Equal(t, "15", req.Header.Get("Content-Length"))
|
||||
assert.EqualValues(t, 15, req.ContentLength)
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ func TestAPILock(t *testing.T) {
|
||||
assert.Equal(t, "POST", r.Method)
|
||||
assert.Equal(t, lfsapi.MediaType, r.Header.Get("Accept"))
|
||||
assert.Equal(t, lfsapi.MediaType, r.Header.Get("Content-Type"))
|
||||
assert.Equal(t, "61", r.Header.Get("Content-Length"))
|
||||
|
||||
lockReq := &lockRequest{}
|
||||
err := json.NewDecoder(r.Body).Decode(lockReq)
|
||||
|
@ -19,6 +19,7 @@ func TestAPIBatch(t *testing.T) {
|
||||
}
|
||||
|
||||
assert.Equal(t, "POST", r.Method)
|
||||
assert.Equal(t, "80", r.Header.Get("Content-Length"))
|
||||
|
||||
bReq := &batchRequest{}
|
||||
err := json.NewDecoder(r.Body).Decode(bReq)
|
||||
|
Loading…
Reference in New Issue
Block a user