mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-06-06 22:26:43 +00:00

* [linter] Add `musttag` Enforce field tags in (un)marshaled structs. * [linter] Add `nestif` Reports deeply nested if statements. * [linter] Add `noctx` Finds sending http request without context.Context. * [linter] Add `paralleltest` Paralleltest detects missing usage of t.Parallel() method in your Go test. * [linter] Add `tagalign` Check that struct tags are well aligned. * [linter] Add `tagliatelle` Checks the struct tags. * [linter] Add `whitespace` Tool for detection of leading and trailing whitespace. * [paralleltest] Exclude files bc of data race in tests Signed-off-by: Julian Strobl <jmastr@mailbox.org>
131 lines
3.4 KiB
Go
131 lines
3.4 KiB
Go
package keeper_test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
keepertest "github.com/planetmint/planetmint-go/testutil/keeper"
|
|
"github.com/planetmint/planetmint-go/testutil/sample"
|
|
"github.com/planetmint/planetmint-go/x/dao/keeper"
|
|
"github.com/planetmint/planetmint-go/x/dao/types"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func setupMsgServer(t testing.TB) (types.MsgServer, context.Context) {
|
|
k, ctx := keepertest.DaoKeeper(t)
|
|
return keeper.NewMsgServerImpl(*k), sdk.WrapSDKContext(ctx)
|
|
}
|
|
|
|
func TestMsgServer(t *testing.T) {
|
|
t.Parallel()
|
|
ms, ctx := setupMsgServer(t)
|
|
require.NotNil(t, ms)
|
|
require.NotNil(t, ctx)
|
|
}
|
|
|
|
func TestMsgServerReportPoPResult(t *testing.T) {
|
|
t.Parallel()
|
|
initiator := sample.Secp256k1AccAddress()
|
|
challenger := sample.Secp256k1AccAddress()
|
|
challengee := sample.Secp256k1AccAddress()
|
|
description := "sample text"
|
|
|
|
testCases := []struct {
|
|
name string
|
|
msg types.MsgReportPopResult
|
|
errMsg string
|
|
}{
|
|
{
|
|
"report pop result",
|
|
types.MsgReportPopResult{
|
|
Creator: challenger.String(),
|
|
Challenge: &types.Challenge{
|
|
Initiator: initiator.String(),
|
|
Challenger: challenger.String(),
|
|
Challengee: challengee.String(),
|
|
Height: 1,
|
|
Description: description,
|
|
Success: true,
|
|
},
|
|
},
|
|
"",
|
|
},
|
|
{
|
|
"success not set",
|
|
types.MsgReportPopResult{
|
|
Creator: challenger.String(),
|
|
Challenge: &types.Challenge{
|
|
Initiator: initiator.String(),
|
|
Challenger: challenger.String(),
|
|
Challengee: challengee.String(),
|
|
Height: 1,
|
|
Description: description,
|
|
},
|
|
},
|
|
"", // no error because Go defaults bool to false
|
|
},
|
|
{
|
|
"initiator not set",
|
|
types.MsgReportPopResult{
|
|
Creator: challenger.String(),
|
|
Challenge: &types.Challenge{
|
|
Challenger: challenger.String(),
|
|
Challengee: challengee.String(),
|
|
Height: 1,
|
|
Description: description,
|
|
Success: true,
|
|
},
|
|
},
|
|
"Initiator is not set: invalid challenge",
|
|
},
|
|
}
|
|
|
|
msgServer, ctx := setupMsgServer(t)
|
|
|
|
for _, tc := range testCases {
|
|
res, err := msgServer.ReportPopResult(ctx, &tc.msg)
|
|
|
|
if tc.errMsg != "" {
|
|
assert.EqualError(t, err, tc.errMsg)
|
|
} else {
|
|
assert.Equal(t, &types.MsgReportPopResultResponse{}, res)
|
|
}
|
|
}
|
|
}
|
|
func TestMsgServerMintToken(t *testing.T) {
|
|
t.Parallel()
|
|
minter := sample.AccAddress()
|
|
beneficiary := sample.ConstBech32Addr
|
|
mintRequest := sample.MintRequest(beneficiary, 1000, "hash")
|
|
|
|
msg := types.NewMsgMintToken(minter, &mintRequest)
|
|
msgServer, ctx := setupMsgServer(t)
|
|
res, err := msgServer.MintToken(ctx, msg)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, &types.MsgMintTokenResponse{}, res)
|
|
}
|
|
|
|
// should throw error because hash has already been used
|
|
_, err = msgServer.MintToken(ctx, msg)
|
|
if assert.Error(t, err) {
|
|
assert.EqualError(t, err, fmt.Sprintf("liquid tx hash %s has already been minted: already minted", "hash"))
|
|
}
|
|
}
|
|
|
|
func TestMsgServerMintTokenInvalidAddress(t *testing.T) {
|
|
t.Parallel()
|
|
minter := sample.AccAddress()
|
|
beneficiary := "invalid address"
|
|
mintRequest := sample.MintRequest(beneficiary, 1000, "hash")
|
|
|
|
msg := types.NewMsgMintToken(minter, &mintRequest)
|
|
msgServer, ctx := setupMsgServer(t)
|
|
_, err := msgServer.MintToken(ctx, msg)
|
|
if assert.Error(t, err) {
|
|
assert.EqualError(t, err, fmt.Sprintf("for provided address %s: invalid address", beneficiary))
|
|
}
|
|
}
|