package server_test
import (
"context"
"github.com/go-git/go-git/v5/plumbing"
"github.com/go-git/go-git/v5/plumbing/protocol/packp"
"github.com/go-git/go-git/v5/plumbing/transport"
fixtures "github.com/go-git/go-git-fixtures/v4"
. "gopkg.in/check.v1"
)
type ReceivePackSuite struct {
BaseSuite
}
var _ = Suite(&ReceivePackSuite{})
func (s *ReceivePackSuite) SetUpSuite(c *C) {
s.BaseSuite.SetUpSuite(c)
s.ReceivePackSuite.Client = s.client
}
func (s *ReceivePackSuite) SetUpTest(c *C) {
s.prepareRepositories(c)
}
func (s *ReceivePackSuite) TearDownTest(c *C) {
s.Suite.TearDownSuite(c)
}
// Overwritten, server returns error earlier.
func (s *ReceivePackSuite) TestAdvertisedReferencesNotExists(c *C) {
r, err := s.Client.NewReceivePackSession(s.NonExistentEndpoint, s.EmptyAuth)
c.Assert(err, Equals, transport.ErrRepositoryNotFound)
c.Assert(r, IsNil)
}
func (s *ReceivePackSuite) TestReceivePackWithNilPackfile(c *C) {
endpoint := s.Endpoint
auth := s.EmptyAuth
fixture := fixtures.Basic().ByTag("packfile").One()
req := packp.NewReferenceUpdateRequest()
req.Commands = []*packp.Command{
{Name: "refs/heads/newbranch", Old: plumbing.NewHash(fixture.Head), New: plumbing.ZeroHash},
}
// default is already nil, but be explicit since this is what the test is for
req.Packfile = nil
comment := Commentf(
"failed with ep=%s fixture=%s",
endpoint.String(), fixture.URL,
)
r, err := s.Client.NewReceivePackSession(endpoint, auth)
c.Assert(err, IsNil, comment)
defer func() { c.Assert(r.Close(), IsNil, comment) }()
report, err := r.ReceivePack(context.Background(), req)
c.Assert(report, IsNil, comment)
c.Assert(err, NotNil, comment)
}