From 1a01e8e7ebb32431e810ebefb7b9805f9e58126e Mon Sep 17 00:00:00 2001 From: yutianwu Date: Fri, 28 Jul 2023 10:11:24 +0800 Subject: [PATCH] chore: add more test cases for cross chain apps --- x/storage/keeper/cross_app_bucket_test.go | 49 ++++++++++++++++++++--- x/storage/types/crosschain.go | 18 +++++++++ 2 files changed, 61 insertions(+), 6 deletions(-) diff --git a/x/storage/keeper/cross_app_bucket_test.go b/x/storage/keeper/cross_app_bucket_test.go index c4e9f35df..89059a317 100644 --- a/x/storage/keeper/cross_app_bucket_test.go +++ b/x/storage/keeper/cross_app_bucket_test.go @@ -13,12 +13,6 @@ import ( ) func (s *TestSuite) TestSynDeleteBucket() { - pack := types.DeleteBucketAckPackage{ - Status: 1, - Id: big.NewInt(10), - ExtraData: []byte("x"), - } - pack.MustSerialize() ctrl := gomock.NewController(s.T()) storageKeeper := types.NewMockStorageKeeper(ctrl) storageKeeper.EXPECT().Logger(gomock.Any()).Return(s.ctx.Logger()).AnyTimes() @@ -55,3 +49,46 @@ func (s *TestSuite) TestSynDeleteBucket() { res = app.ExecuteSynPackage(s.ctx, nil, serializedSynPackage) s.Require().NoError(res.Err) } + +func (s *TestSuite) TestSynCreateBucket() { + ctrl := gomock.NewController(s.T()) + storageKeeper := types.NewMockStorageKeeper(ctrl) + storageKeeper.EXPECT().Logger(gomock.Any()).Return(s.ctx.Logger()).AnyTimes() + + app := keeper.NewBucketApp(storageKeeper) + createSynPackage := types.CreateBucketSynPackage{ + Creator: sample.RandAccAddress(), + BucketName: "bucketname", + ExtraData: []byte("extra data"), + PaymentAddress: sample.RandAccAddress(), + PrimarySpAddress: sample.RandAccAddress(), + } + serializedSynPackage := createSynPackage.MustSerialize() + serializedSynPackage = append([]byte{types.OperationCreateBucket}, serializedSynPackage...) + + // case 1: invalid package + res := app.ExecuteSynPackage(s.ctx, nil, serializedSynPackage) + s.Require().ErrorContains(res.Err, "Invalid type of visibility") + + // case 2: create bucket error + createSynPackage.Visibility = uint32(types.VISIBILITY_TYPE_PUBLIC_READ) + serializedSynPackage = createSynPackage.MustSerialize() + serializedSynPackage = append([]byte{types.OperationCreateBucket}, serializedSynPackage...) + + storageKeeper.EXPECT().CreateBucket(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(sdk.NewUint(1), fmt.Errorf("create error")) + res = app.ExecuteSynPackage(s.ctx, nil, serializedSynPackage) + s.Require().ErrorContains(res.Err, "create error") + + // case 3: create bucket success + createSynPackage.Visibility = uint32(types.VISIBILITY_TYPE_PUBLIC_READ) + serializedSynPackage = createSynPackage.MustSerialize() + serializedSynPackage = append([]byte{types.OperationCreateBucket}, serializedSynPackage...) + + storageKeeper.EXPECT().CreateBucket(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(sdk.NewUint(1), nil) + res = app.ExecuteSynPackage(s.ctx, nil, serializedSynPackage) + s.Require().NoError(res.Err) +} + +func (s *TestSuite) TestAckMirrorBucket() { + +} diff --git a/x/storage/types/crosschain.go b/x/storage/types/crosschain.go index 36938efd8..96cf90cc3 100644 --- a/x/storage/types/crosschain.go +++ b/x/storage/types/crosschain.go @@ -381,6 +381,24 @@ var ( } ) +func (p CreateBucketSynPackage) MustSerialize() []byte { + encodedBytes, err := createBucketSynPackageStructArgs.Pack(&CreateBucketSynPackageStruct{ + Creator: common.BytesToAddress(p.Creator), + BucketName: p.BucketName, + Visibility: p.Visibility, + PaymentAddress: common.BytesToAddress(p.PaymentAddress), + PrimarySpAddress: common.BytesToAddress(p.PrimarySpAddress), + PrimarySpApprovalExpiredHeight: p.PrimarySpApprovalExpiredHeight, + PrimarySpApprovalSignature: p.PrimarySpApprovalSignature, + ChargedReadQuota: p.ChargedReadQuota, + ExtraData: p.ExtraData, + }) + if err != nil { + panic("encode create bucket syn package error") + } + return encodedBytes +} + func (p CreateBucketSynPackage) ValidateBasic() error { msg := MsgCreateBucket{ Creator: p.Creator.String(),