Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2022-12-19 13:16:10 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2022-12-20 15:34:21 +0300
commit80725b72b96c359ef3ca419367ee0e08c7bfd773 (patch)
treefa72b95a8fdc694dd0eafb69aeadb51d6b4b8b3e
parenta14ee46b003f9a141a44bc3587f446c7e2f6f9b1 (diff)
hook: Refactor ReferenceTransactionHook test to properly assert errors
We only assert error codes in the ReferenceTransactionHook test. Refactor it to instead assert the complete returned error as well as the response.
-rw-r--r--internal/gitaly/service/hook/reference_transaction_test.go65
1 files changed, 40 insertions, 25 deletions
diff --git a/internal/gitaly/service/hook/reference_transaction_test.go b/internal/gitaly/service/hook/reference_transaction_test.go
index d75a51429..3f54ccb87 100644
--- a/internal/gitaly/service/hook/reference_transaction_test.go
+++ b/internal/gitaly/service/hook/reference_transaction_test.go
@@ -12,8 +12,8 @@ import (
"gitlab.com/gitlab-org/gitaly/v15/internal/backchannel"
"gitlab.com/gitlab-org/gitaly/v15/internal/git"
"gitlab.com/gitlab-org/gitaly/v15/internal/git/gittest"
- "gitlab.com/gitlab-org/gitaly/v15/internal/helper"
"gitlab.com/gitlab-org/gitaly/v15/internal/metadata/featureflag"
+ "gitlab.com/gitlab-org/gitaly/v15/internal/structerr"
"gitlab.com/gitlab-org/gitaly/v15/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v15/internal/testhelper/testcfg"
"gitlab.com/gitlab-org/gitaly/v15/internal/testhelper/testserver"
@@ -59,49 +59,66 @@ func TestReferenceTransactionHook(t *testing.T) {
stdin []byte
state gitalypb.ReferenceTransactionHookRequest_State
voteResponse gitalypb.VoteTransactionResponse_TransactionState
- expectedCode codes.Code
+ expectedErr error
+ expectedResponse *gitalypb.ReferenceTransactionHookResponse
expectedReftxHash []byte
}{
{
- desc: "hook triggers transaction with default state",
- stdin: []byte("foobar"),
- voteResponse: gitalypb.VoteTransactionResponse_COMMIT,
- expectedCode: codes.OK,
+ desc: "hook triggers transaction with default state",
+ stdin: []byte("foobar"),
+ voteResponse: gitalypb.VoteTransactionResponse_COMMIT,
+ expectedResponse: &gitalypb.ReferenceTransactionHookResponse{
+ ExitStatus: &gitalypb.ExitStatus{
+ Value: 0,
+ },
+ },
expectedReftxHash: []byte("foobar"),
},
{
- desc: "hook triggers transaction with explicit prepared state",
- stdin: []byte("foobar"),
- state: gitalypb.ReferenceTransactionHookRequest_PREPARED,
- voteResponse: gitalypb.VoteTransactionResponse_COMMIT,
- expectedCode: codes.OK,
+ desc: "hook triggers transaction with explicit prepared state",
+ stdin: []byte("foobar"),
+ state: gitalypb.ReferenceTransactionHookRequest_PREPARED,
+ voteResponse: gitalypb.VoteTransactionResponse_COMMIT,
+ expectedResponse: &gitalypb.ReferenceTransactionHookResponse{
+ ExitStatus: &gitalypb.ExitStatus{
+ Value: 0,
+ },
+ },
expectedReftxHash: []byte("foobar"),
},
{
- desc: "hook does not trigger transaction with aborted state",
- stdin: []byte("foobar"),
- state: gitalypb.ReferenceTransactionHookRequest_ABORTED,
- expectedCode: codes.OK,
+ desc: "hook does not trigger transaction with aborted state",
+ stdin: []byte("foobar"),
+ state: gitalypb.ReferenceTransactionHookRequest_ABORTED,
+ expectedResponse: &gitalypb.ReferenceTransactionHookResponse{
+ ExitStatus: &gitalypb.ExitStatus{
+ Value: 0,
+ },
+ },
},
{
- desc: "hook triggers transaction with committed state",
- stdin: []byte("foobar"),
- state: gitalypb.ReferenceTransactionHookRequest_COMMITTED,
- expectedCode: codes.OK,
+ desc: "hook triggers transaction with committed state",
+ stdin: []byte("foobar"),
+ state: gitalypb.ReferenceTransactionHookRequest_COMMITTED,
+ expectedResponse: &gitalypb.ReferenceTransactionHookResponse{
+ ExitStatus: &gitalypb.ExitStatus{
+ Value: 0,
+ },
+ },
expectedReftxHash: []byte("foobar"),
},
{
desc: "hook fails with failed vote",
stdin: []byte("foobar"),
voteResponse: gitalypb.VoteTransactionResponse_ABORT,
- expectedCode: codes.Aborted,
+ expectedErr: structerr.NewAborted("reference-transaction hook: error voting on transaction: transaction was aborted"),
expectedReftxHash: []byte("foobar"),
},
{
desc: "hook fails with stopped vote",
stdin: []byte("foobar"),
voteResponse: gitalypb.VoteTransactionResponse_STOP,
- expectedCode: codes.FailedPrecondition,
+ expectedErr: structerr.NewFailedPrecondition("reference-transaction hook: error voting on transaction: transaction was stopped"),
expectedReftxHash: []byte("foobar"),
},
}
@@ -182,10 +199,8 @@ func TestReferenceTransactionHook(t *testing.T) {
require.NoError(t, stream.CloseSend())
resp, err := stream.Recv()
- require.Equal(t, helper.GrpcCode(err), tc.expectedCode)
- if tc.expectedCode == codes.OK {
- require.Equal(t, resp.GetExitStatus().GetValue(), int32(0))
- }
+ testhelper.RequireGrpcError(t, tc.expectedErr, err)
+ testhelper.ProtoEqual(t, tc.expectedResponse, resp)
var expectedReftxHash []byte
if tc.expectedReftxHash != nil {