git-lfs/tq/verify_test.go

67 lines
1.4 KiB
Go

package tq
import (
"encoding/json"
"net/http"
"net/http/httptest"
"sync/atomic"
"testing"
"github.com/git-lfs/git-lfs/lfsapi"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestVerifyWithoutAction(t *testing.T) {
c := &lfsapi.Client{}
tr := &Transfer{
Oid: "abc",
Size: 123,
}
assert.Nil(t, verifyUpload(c, "origin", tr))
}
func TestVerifySuccess(t *testing.T) {
var called uint32
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.String() != "/verify" {
w.WriteHeader(http.StatusNotFound)
return
}
atomic.AddUint32(&called, 1)
assert.Equal(t, "POST", r.Method)
assert.Equal(t, "bar", r.Header.Get("Foo"))
assert.Equal(t, "29", r.Header.Get("Content-Length"))
assert.Equal(t, "application/vnd.git-lfs+json", r.Header.Get("Content-Type"))
var tr Transfer
assert.Nil(t, json.NewDecoder(r.Body).Decode(&tr))
assert.Equal(t, "abcd1234", tr.Oid)
assert.EqualValues(t, 123, tr.Size)
}))
defer srv.Close()
c, err := lfsapi.NewClient(nil, lfsapi.UniqTestEnv{
"lfs.transfer.maxverifies": "1",
})
require.Nil(t, err)
tr := &Transfer{
Oid: "abcd1234",
Size: 123,
Actions: map[string]*Action{
"verify": &Action{
Href: srv.URL + "/verify",
Header: map[string]string{
"foo": "bar",
},
},
},
}
assert.Nil(t, verifyUpload(c, "origin", tr))
assert.EqualValues(t, 1, called)
}