diff options
author | Rubén Dávila <ruben@gitlab.com> | 2018-08-07 19:48:37 +0300 |
---|---|---|
committer | Rubén Dávila <ruben@gitlab.com> | 2018-08-07 19:48:37 +0300 |
commit | 18f20d9f0344db5196eb58ba25247cab086449e3 (patch) | |
tree | ea173ec47c0b09ce0dc5492269446368dfc42692 | |
parent | 1ba70784661433d2c7bd937386830a02bf600b7c (diff) |
Tests for push over HTTPrd-add-support-for-max-input-size-config-2
-rw-r--r-- | internal/service/smarthttp/receive_pack_test.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/internal/service/smarthttp/receive_pack_test.go b/internal/service/smarthttp/receive_pack_test.go index 84230327f..1db345112 100644 --- a/internal/service/smarthttp/receive_pack_test.go +++ b/internal/service/smarthttp/receive_pack_test.go @@ -47,6 +47,57 @@ func TestSuccessfulReceivePackRequest(t *testing.T) { testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "show", push.newHead) } +func TestSuccessfulReceivePackRequestWithGitOpts(t *testing.T) { + server, serverSocketPath := runSmartHTTPServer(t) + defer server.Stop() + + repo, repoPath, cleanup := testhelper.NewTestRepo(t) + defer cleanup() + + client, conn := newSmartHTTPClient(t, serverSocketPath) + defer conn.Close() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + stream, err := client.PostReceivePack(ctx) + require.NoError(t, err) + + push := newTestPush(t, nil) + firstRequest := &pb.PostReceivePackRequest{Repository: repo, GlId: "user-123", GlRepository: "project-123", GitConfigOptions: []string{"receive.MaxInputSize=10000"}} + response := doPush(t, stream, firstRequest, push.body) + + expectedResponse := "0030\x01000eunpack ok\n0019ok refs/heads/master\n00000000" + require.Equal(t, expectedResponse, string(response), "Expected response to be %q, got %q", expectedResponse, response) + + // The fact that this command succeeds means that we got the commit correctly, no further checks should be needed. + testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "show", push.newHead) +} + +func TestFailedReceivePackRequestWithGitOpts(t *testing.T) { + server, serverSocketPath := runSmartHTTPServer(t) + defer server.Stop() + + repo, _, cleanup := testhelper.NewTestRepo(t) + defer cleanup() + + client, conn := newSmartHTTPClient(t, serverSocketPath) + defer conn.Close() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + stream, err := client.PostReceivePack(ctx) + require.NoError(t, err) + + push := newTestPush(t, nil) + firstRequest := &pb.PostReceivePackRequest{Repository: repo, GlId: "user-123", GlRepository: "project-123", GitConfigOptions: []string{"receive.MaxInputSize=1"}} + response := doPush(t, stream, firstRequest, push.body) + + expectedResponse := "002e\x02fatal: pack exceeds maximum allowed size\n0059\x010028unpack unpack-objects abnormal exit\n0028ng refs/heads/master unpacker error\n00000000" + require.Equal(t, expectedResponse, string(response), "Expected response to be %q, got %q", expectedResponse, response) +} + func doPush(t *testing.T, stream pb.SmartHTTPService_PostReceivePackClient, firstRequest *pb.PostReceivePackRequest, body io.Reader) []byte { require.NoError(t, stream.Send(firstRequest)) |