diff --git a/demo/app/app_test.go b/demo/app/app_test.go index 7c8f4b1..58a4ddb 100644 --- a/demo/app/app_test.go +++ b/demo/app/app_test.go @@ -1,17 +1,23 @@ package app import ( + "encoding/json" "fmt" "testing" + "time" "cosmossdk.io/log" "github.com/CosmWasm/wasmd/x/wasm" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + babylonkeeper "github.com/babylonlabs-io/babylon-sdk/x/babylon/keeper" + "github.com/babylonlabs-io/babylon-sdk/x/babylon/types" abci "github.com/cometbft/cometbft/abci/types" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" dbm "github.com/cosmos/cosmos-db" - "github.com/stretchr/testify/require" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" ) var emptyWasmOpts []wasm.Option @@ -61,3 +67,89 @@ func TestGetMaccPerms(t *testing.T) { dup := GetMaccPerms() require.Equal(t, maccPerms, dup, "duplicated module account permissions differed from actual module account permissions") } + +const ( + TestDataPath = "../../tests/testdata" + BabylonContractCodePath = TestDataPath + "/babylon_contract.wasm" + BtcStakingContractCodePath = TestDataPath + "/btc_staking.wasm" + BtcFinalityContractCodePath = TestDataPath + "/btc_finality.wasm" +) + +func GetGZippedContractCodes() ([]byte, []byte, []byte) { + babylonContractCode, err := types.GetGZippedContractCode(BabylonContractCodePath) + if err != nil { + panic(err) + } + btcStakingContractCode, err := types.GetGZippedContractCode(BtcStakingContractCodePath) + if err != nil { + panic(err) + } + btcFinalityContractCode, err := types.GetGZippedContractCode(BtcFinalityContractCodePath) + if err != nil { + panic(err) + } + + return babylonContractCode, btcStakingContractCode, btcFinalityContractCode +} + +func TestInstantiateBabylonContracts(t *testing.T) { + consumerApp := Setup(t) + ctx := consumerApp.NewContext(false) + ctx = ctx.WithBlockHeader(cmtproto.Header{Time: time.Now()}) + babylonKeeper := consumerApp.BabylonKeeper + babylonMsgServer := babylonkeeper.NewMsgServer(babylonKeeper) + wasmKeeper := consumerApp.WasmKeeper + wasmMsgServer := wasmkeeper.NewMsgServerImpl(&wasmKeeper) + + // store Babylon contract codes + babylonContractCode, btcStakingContractCode, btcFinalityContractCode := GetGZippedContractCodes() + resp, err := wasmMsgServer.StoreCode(ctx, &wasmtypes.MsgStoreCode{ + Sender: consumerApp.BabylonKeeper.GetAuthority(), + WASMByteCode: babylonContractCode, + }) + babylonContractCodeID := resp.CodeID + require.NoError(t, err) + resp, err = wasmMsgServer.StoreCode(ctx, &wasmtypes.MsgStoreCode{ + Sender: consumerApp.BabylonKeeper.GetAuthority(), + WASMByteCode: btcStakingContractCode, + }) + btcStakingContractCodeID := resp.CodeID + require.NoError(t, err) + resp, err = wasmMsgServer.StoreCode(ctx, &wasmtypes.MsgStoreCode{ + Sender: consumerApp.BabylonKeeper.GetAuthority(), + WASMByteCode: btcFinalityContractCode, + }) + btcFinalityContractCodeID := resp.CodeID + require.NoError(t, err) + + // BTC staking init message + btcStakingInitMsg := map[string]interface{}{ + "admin": consumerApp.BabylonKeeper.GetAuthority(), + } + btcStakingInitMsgBytes, err := json.Marshal(btcStakingInitMsg) + require.NoError(t, err) + // BTC finality init message + btcFinalityInitMsg := map[string]interface{}{ + "admin": consumerApp.BabylonKeeper.GetAuthority(), + } + btcFinalityInitMsgBytes, err := json.Marshal(btcFinalityInitMsg) + require.NoError(t, err) + + // instantiate Babylon contract + _, err = babylonMsgServer.InstantiateBabylonContracts(ctx, &types.MsgInstantiateBabylonContracts{ + Network: "regtest", + BabylonContractCodeId: babylonContractCodeID, + BtcStakingContractCodeId: btcStakingContractCodeID, + BtcFinalityContractCodeId: btcFinalityContractCodeID, + BabylonTag: "01020304", + BtcConfirmationDepth: 1, + CheckpointFinalizationTimeout: 2, + NotifyCosmosZone: false, + BtcStakingMsg: btcStakingInitMsgBytes, + BtcFinalityMsg: btcFinalityInitMsgBytes, + ConsumerName: "test-consumer", + ConsumerDescription: "test-consumer-description", + Admin: babylonKeeper.GetAuthority(), + }) + require.NoError(t, err) +} diff --git a/x/babylon/keeper/msg_server_test.go b/x/babylon/keeper/msg_server_test.go deleted file mode 100644 index f14faae..0000000 --- a/x/babylon/keeper/msg_server_test.go +++ /dev/null @@ -1,69 +0,0 @@ -package keeper_test - -import ( - "encoding/json" - "testing" - - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - "github.com/babylonlabs-io/babylon-sdk/x/babylon/types" - "github.com/stretchr/testify/require" -) - -// TODO: fix this test -func TestInstantiateBabylonContracts(t *testing.T) { - keepers := NewTestKeepers(t) - msgServer := keepers.BabylonMsgServer - wasmMsgServer := keepers.WasmMsgServer - - // store Babylon contract codes - babylonContractCode, btcStakingContractCode, btcFinalityContractCode := GetGZippedContractCodes() - resp, err := wasmMsgServer.StoreCode(keepers.Ctx, &wasmtypes.MsgStoreCode{ - Sender: keepers.BabylonKeeper.GetAuthority(), - WASMByteCode: babylonContractCode, - }) - babylonContractCodeID := resp.CodeID - require.NoError(t, err) - resp, err = wasmMsgServer.StoreCode(keepers.Ctx, &wasmtypes.MsgStoreCode{ - Sender: keepers.BabylonKeeper.GetAuthority(), - WASMByteCode: btcStakingContractCode, - }) - btcStakingContractCodeID := resp.CodeID - require.NoError(t, err) - resp, err = wasmMsgServer.StoreCode(keepers.Ctx, &wasmtypes.MsgStoreCode{ - Sender: keepers.BabylonKeeper.GetAuthority(), - WASMByteCode: btcFinalityContractCode, - }) - btcFinalityContractCodeID := resp.CodeID - require.NoError(t, err) - - // BTC staking init message - btcStakingInitMsg := map[string]interface{}{ - "admin": keepers.BabylonKeeper.GetAuthority(), - } - btcStakingInitMsgBytes, err := json.Marshal(btcStakingInitMsg) - require.NoError(t, err) - // BTC finality init message - btcFinalityInitMsg := map[string]interface{}{ - "admin": keepers.BabylonKeeper.GetAuthority(), - } - btcFinalityInitMsgBytes, err := json.Marshal(btcFinalityInitMsg) - require.NoError(t, err) - - // instantiate Babylon contract - _, err = msgServer.InstantiateBabylonContracts(keepers.Ctx, &types.MsgInstantiateBabylonContracts{ - Network: "regtest", - BabylonContractCodeId: babylonContractCodeID, - BtcStakingContractCodeId: btcStakingContractCodeID, - BtcFinalityContractCodeId: btcFinalityContractCodeID, - BabylonTag: "01020304", - BtcConfirmationDepth: 1, - CheckpointFinalizationTimeout: 2, - NotifyCosmosZone: false, - BtcStakingMsg: btcStakingInitMsgBytes, - BtcFinalityMsg: btcFinalityInitMsgBytes, - ConsumerName: "test-consumer", - ConsumerDescription: "test-consumer-description", - Admin: keepers.BabylonKeeper.GetAuthority(), - }) - require.NoError(t, err) -}