Skip to content

Commit

Permalink
Add More Unit Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
joelsmith-2019 committed Sep 12, 2024
1 parent bcc1e67 commit 74b1a44
Show file tree
Hide file tree
Showing 5 changed files with 179 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
package keeper_test

import (
"testing"

sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/stretchr/testify/require"
"github.com/wormhole-foundation/wormchain/x/wormhole/types"
"github.com/wormhole-foundation/wormhole/sdk/vaa"
)

// TestExecuteGatewayGovernanceVaaUpgrades tests creating and cancelling upgrades
func TestExecuteGatewayGovernanceVaaUpgrades(t *testing.T) {
_, ctx, msgServer, privateKeys, signer, guardianSet := setupWormholeMessageServer(t)

// Create upgrade payload
payload, err := vaa.BodyGatewayScheduleUpgrade{
Name: "v5.0.0",
Height: uint64(100),
}.Serialize()
require.NoError(t, err)

// Generate VAA
v := generateVaa(guardianSet.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, err := v.Marshal()
require.NoError(t, err)

// Submit upgrade governance VAA
res, err := msgServer.ExecuteGatewayGovernanceVaa(ctx, &types.MsgExecuteGatewayGovernanceVaa{
Signer: signer.String(),
Vaa: vBz,
})
require.NoError(t, err)
require.NotNil(t, res)

// Create cancel upgrade payload
payload, err = vaa.EmptyPayloadVaa(vaa.GatewayModuleStr, vaa.ActionCancelUpgrade, vaa.ChainIDWormchain)
require.NoError(t, err)

// Generate VAA
v = generateVaa(guardianSet.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, err = v.Marshal()
require.NoError(t, err)

// Submit cancel upgrade governance VAA
res, err = msgServer.ExecuteGatewayGovernanceVaa(ctx, &types.MsgExecuteGatewayGovernanceVaa{
Signer: signer.String(),
Vaa: vBz,
})
require.NoError(t, err)
require.NotNil(t, res)
}

// TestExecuteGatewayGovernanceVaaSetIbcComposabilityMwContract tests setting the IBC composability contract
func TestExecuteGatewayGovernanceVaaSetIbcComposabilityMwContract(t *testing.T) {
k, ctx, msgServer, privateKeys, signer, guardianSet := setupWormholeMessageServer(t)

// Get contract bytes
contractAddr := "wormhole1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjq4lyjmh"
contractAddrBz, err := sdk.AccAddressFromBech32(contractAddr)
require.NoError(t, err)

// Create payload
payload, err := vaa.BodyGatewayIbcComposabilityMwContract{
ContractAddr: [32]byte(contractAddrBz),
}.Serialize()
require.NoError(t, err)

// Generate VAA
v := generateVaa(guardianSet.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, err := v.Marshal()
require.NoError(t, err)

// Submit governance VAA
res, err := msgServer.ExecuteGatewayGovernanceVaa(ctx, &types.MsgExecuteGatewayGovernanceVaa{
Signer: signer.String(),
Vaa: vBz,
})
require.NoError(t, err)
require.NotNil(t, res)

// Validate the contract was set
contract := k.GetIbcComposabilityMwContract(ctx)
require.Equal(t, contractAddr, contract.ContractAddress)
}

// TestExecuteGatewayGovernanceVaaUnknownAction tests submitting an unknown action
func TestExecuteGatewayGovernanceVaaUnknownAction(t *testing.T) {
_, ctx, msgServer, privateKeys, signer, guardianSet := setupWormholeMessageServer(t)

// Create payload
payload, err := vaa.EmptyPayloadVaa(vaa.GatewayModuleStr, vaa.GovernanceAction(100), vaa.ChainIDWormchain)
require.NoError(t, err)

// Generate VAA
v := generateVaa(guardianSet.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, err := v.Marshal()
require.NoError(t, err)

// Submit governance VAA
_, err = msgServer.ExecuteGatewayGovernanceVaa(ctx, &types.MsgExecuteGatewayGovernanceVaa{
Signer: signer.String(),
Vaa: vBz,
})
require.Error(t, err)
}

// TestExecuteGatewayGovernanceVaaInvalidVAA tests submitting an invalid VAA
func TestExecuteGatewayGovernanceVaaInvalidVAA(t *testing.T) {
_, ctx, msgServer, _, signer, guardianSet := setupWormholeMessageServer(t)

// Create payload
payload, err := vaa.EmptyPayloadVaa(vaa.GatewayModuleStr, vaa.ActionCancelUpgrade, vaa.ChainIDWormchain)
require.NoError(t, err)

// Generate VAA
v := generateVaa(guardianSet.Index, nil, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, err := v.Marshal()
require.NoError(t, err)

// Submit governance VAA
_, err = msgServer.ExecuteGatewayGovernanceVaa(ctx, &types.MsgExecuteGatewayGovernanceVaa{
Signer: signer.String(),
Vaa: vBz,
})
require.Error(t, err)
}
16 changes: 0 additions & 16 deletions wormchain/x/wormhole/keeper/msg_server_test.go

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ import (
"github.com/wormhole-foundation/wormhole/sdk/vaa"
)

// setupAllowlistMsgServer creates a keeper, context, msg server, private keys, signer, and guardian set for
// setupWormholeMessageServer creates a keeper, context, msg server, private keys, signer, and guardian set for
// testing the wasm allowlist msg server
func setupAllowlistMsgServer(t *testing.T) (keeper.Keeper, sdk.Context, types.MsgServer, []*ecdsa.PrivateKey, sdk.AccAddress, *types.GuardianSet) {
func setupWormholeMessageServer(t *testing.T) (keeper.Keeper, sdk.Context, types.MsgServer, []*ecdsa.PrivateKey, sdk.AccAddress, *types.GuardianSet) {
k, ctx := keepertest.WormholeKeeper(t)
msgServer := keeper.NewMsgServerImpl(*k)

Expand All @@ -36,7 +36,7 @@ func setupAllowlistMsgServer(t *testing.T) (keeper.Keeper, sdk.Context, types.Ms

// TestWasmAllowlistMsgServer tests the endpoints of the wasm allowlist msg server (happy path)
func TestWasmAllowlistMsgServer(t *testing.T) {
k, ctx, msgServer, privateKeys, signer, guardianSet := setupAllowlistMsgServer(t)
k, ctx, msgServer, privateKeys, signer, guardianSet := setupWormholeMessageServer(t)

bech32ContractAddr := "wormhole1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjq4lyjmh"

Expand Down Expand Up @@ -100,7 +100,7 @@ func TestWasmAllowlistMsgServer(t *testing.T) {
// TestWasmAllowlistMsgServerMismatchedCodeId tests the endpoints of the wasm allowlist msg server
// with mismatched code id
func TestWasmAllowlistMsgServerMismatchedCodeId(t *testing.T) {
_, ctx, msgServer, privateKeys, signer, guardianSet := setupAllowlistMsgServer(t)
_, ctx, msgServer, privateKeys, signer, guardianSet := setupWormholeMessageServer(t)

bech32ContractAddr := "wormhole1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjq4lyjmh"
codeId := uint64(1)
Expand Down Expand Up @@ -135,7 +135,7 @@ func TestWasmAllowlistMsgServerMismatchedCodeId(t *testing.T) {
// TestWasmAllowlistMsgServerMismatchedContractAddr tests the endpoints of the wasm allowlist msg server
// with mismatched contract addresses
func TestWasmAllowlistMsgServerMismatchedContractAddr(t *testing.T) {
_, ctx, msgServer, privateKeys, signer, guardianSet := setupAllowlistMsgServer(t)
_, ctx, msgServer, privateKeys, signer, guardianSet := setupWormholeMessageServer(t)

bech32ContractAddr := "wormhole1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjq4lyjmh"
codeId := uint64(1)
Expand Down Expand Up @@ -166,7 +166,7 @@ func TestWasmAllowlistMsgServerMismatchedContractAddr(t *testing.T) {
// TestWasmAllowlistMsgServerMismatchedVaaAction tests the endpoints of the wasm allowlist msg server
// with mismatched vaa action
func TestWasmAllowlistMsgServerMismatchedVaaAction(t *testing.T) {
_, ctx, msgServer, privateKeys, signer, guardianSet := setupAllowlistMsgServer(t)
_, ctx, msgServer, privateKeys, signer, guardianSet := setupWormholeMessageServer(t)

bech32ContractAddr := "wormhole1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjq4lyjmh"
codeId := uint64(1)
Expand Down Expand Up @@ -197,7 +197,7 @@ func TestWasmAllowlistMsgServerMismatchedVaaAction(t *testing.T) {
// TestWasmAllowlistMsgServerInvalidVAA tests the endpoints of the wasm allowlist msg server
// with invalid vaa
func TestWasmAllowlistMsgServerInvalidVAA(t *testing.T) {
_, ctx, msgServer, _, signer, guardianSet := setupAllowlistMsgServer(t)
_, ctx, msgServer, _, signer, guardianSet := setupWormholeMessageServer(t)

bech32ContractAddr := "wormhole1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjq4lyjmh"
codeId := uint64(1)
Expand Down
2 changes: 1 addition & 1 deletion wormchain/x/wormhole/keeper/vaa_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ func generateVaa(index uint32, signers []*ecdsa.PrivateKey, emitterChain vaa.Cha
Nonce: uint32(1),
Sequence: uint64(lastestSequence),
ConsistencyLevel: uint8(32),
EmitterChain: vaa.ChainIDSolana,
EmitterChain: emitterChain,
EmitterAddress: vaa.Address(vaa.GovernanceEmitter),
Payload: payload,
}
Expand Down
44 changes: 44 additions & 0 deletions wormchain/x/wormhole/keeper/wasm_instantiate_allowlist_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package keeper_test

import (
"testing"

"github.com/stretchr/testify/require"
keepertest "github.com/wormhole-foundation/wormchain/testutil/keeper"
"github.com/wormhole-foundation/wormchain/x/wormhole/types"
)

// TestWasmInstantiateAllowlist tests the setting, getting, and removing of allowed addresses
func TestWasmInstantiateAllowlist(t *testing.T) {
k, ctx := keepertest.WormholeKeeper(t)

// Create entry
entry := types.WasmInstantiateAllowedContractCodeId{
ContractAddress: "wormhole1du4amsmvx8yqr8whw7qc5m3c0zpwknmzelwqy6",
CodeId: 1,
}

// Add contract to allow list
k.SetWasmInstantiateAllowlist(ctx, entry)

// Check if address exists
hasAddr := k.HasWasmInstantiateAllowlist(ctx, entry.ContractAddress, entry.CodeId)
require.True(t, hasAddr)

// Check faulty address - does not exist
hasAddr = k.HasWasmInstantiateAllowlist(ctx, "invalid", 0)
require.False(t, hasAddr)

// Get all allowed addresses
addrList := k.GetAllWasmInstiateAllowedAddresses(ctx)
require.Equal(t, 1, len(addrList))
require.Equal(t, entry.ContractAddress, addrList[0].ContractAddress)
require.Equal(t, entry.CodeId, addrList[0].CodeId)

// Remove address
k.KeeperDeleteWasmInstantiateAllowlist(ctx, entry)

// Check if address exists
hasAddr = k.HasWasmInstantiateAllowlist(ctx, entry.ContractAddress, entry.CodeId)
require.False(t, hasAddr)
}

0 comments on commit 74b1a44

Please sign in to comment.