fix merge
This commit is contained in:
commit
c1dbf53f42
@ -2,6 +2,7 @@ package lfsapi
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@ -14,6 +15,10 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type authRequest struct {
|
||||
Test string
|
||||
}
|
||||
|
||||
func TestAuthenticateHeaderAccess(t *testing.T) {
|
||||
tests := map[string]Access{
|
||||
"": BasicAccess,
|
||||
@ -47,6 +52,11 @@ func TestDoWithAuthApprove(t *testing.T) {
|
||||
atomic.AddUint32(&called, 1)
|
||||
w.Header().Set("Lfs-Authenticate", "Basic")
|
||||
|
||||
body := &authRequest{}
|
||||
err := json.NewDecoder(req.Body).Decode(body)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "Approve", body.Test)
|
||||
|
||||
actual := req.Header.Get("Authorization")
|
||||
if len(actual) == 0 {
|
||||
w.WriteHeader(http.StatusUnauthorized)
|
||||
@ -73,6 +83,9 @@ func TestDoWithAuthApprove(t *testing.T) {
|
||||
req, err := http.NewRequest("GET", srv.URL, nil)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = MarshalToRequest(req, &authRequest{Test: "Approve"})
|
||||
require.Nil(t, err)
|
||||
|
||||
res, err := c.DoWithAuth("", req)
|
||||
require.Nil(t, err)
|
||||
|
||||
@ -95,6 +108,11 @@ func TestDoWithAuthReject(t *testing.T) {
|
||||
atomic.AddUint32(&called, 1)
|
||||
w.Header().Set("Lfs-Authenticate", "Basic")
|
||||
|
||||
body := &authRequest{}
|
||||
err := json.NewDecoder(req.Body).Decode(body)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "Reject", body.Test)
|
||||
|
||||
actual := req.Header.Get("Authorization")
|
||||
expected := "Basic " + strings.TrimSpace(
|
||||
base64.StdEncoding.EncodeToString([]byte("user:pass")),
|
||||
@ -133,6 +151,9 @@ func TestDoWithAuthReject(t *testing.T) {
|
||||
req, err := http.NewRequest("GET", srv.URL, nil)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = MarshalToRequest(req, &authRequest{Test: "Reject"})
|
||||
require.Nil(t, err)
|
||||
|
||||
res, err := c.DoWithAuth("", req)
|
||||
require.Nil(t, err)
|
||||
|
||||
|
32
lfsapi/body.go
Normal file
32
lfsapi/body.go
Normal file
@ -0,0 +1,32 @@
|
||||
package lfsapi
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type ReadSeekCloser interface {
|
||||
io.Seeker
|
||||
io.ReadCloser
|
||||
}
|
||||
|
||||
func MarshalToRequest(req *http.Request, obj interface{}) error {
|
||||
by, err := json.Marshal(obj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
req.ContentLength = int64(len(by))
|
||||
req.Body = &closingByteReader{Reader: bytes.NewReader(by)}
|
||||
return nil
|
||||
}
|
||||
|
||||
type closingByteReader struct {
|
||||
*bytes.Reader
|
||||
}
|
||||
|
||||
func (r *closingByteReader) Close() error {
|
||||
return nil
|
||||
}
|
@ -3,6 +3,7 @@ package lfsapi
|
||||
import (
|
||||
"crypto/tls"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net"
|
||||
"net/http"
|
||||
"regexp"
|
||||
@ -79,6 +80,10 @@ func NewClient(osEnv env, gitEnv env) (*Client, error) {
|
||||
}
|
||||
|
||||
func (c *Client) Do(req *http.Request) (*http.Response, error) {
|
||||
if seeker, ok := req.Body.(io.Seeker); ok {
|
||||
seeker.Seek(0, io.SeekStart)
|
||||
}
|
||||
|
||||
res, err := c.httpClient(req.Host).Do(req)
|
||||
if err != nil {
|
||||
return res, err
|
||||
|
12
tq/verify.go
12
tq/verify.go
@ -1,8 +1,6 @@
|
||||
package tq
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"github.com/git-lfs/git-lfs/lfsapi"
|
||||
@ -17,15 +15,15 @@ func verifyUpload(c *lfsapi.Client, t *Transfer) error {
|
||||
return err
|
||||
}
|
||||
|
||||
by, err := json.Marshal(struct {
|
||||
Oid string `json:"oid"`
|
||||
Size int64 `json:"size"`
|
||||
}{Oid: t.Oid, Size: t.Size})
|
||||
req, err := http.NewRequest("POST", action.Href, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("POST", action.Href, bytes.NewReader(by))
|
||||
err = lfsapi.MarshalToRequest(req, struct {
|
||||
Oid string `json:"oid"`
|
||||
Size int64 `json:"size"`
|
||||
}{Oid: t.Oid, Size: t.Size})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user