78 lines
2.2 KiB
Go
78 lines
2.2 KiB
Go
package test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"regexp"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/filecoin-project/go-address"
|
|
"github.com/filecoin-project/lotus/api/test"
|
|
"github.com/filecoin-project/lotus/chain/types"
|
|
logging "github.com/ipfs/go-log/v2"
|
|
"github.com/stretchr/testify/require"
|
|
lcli "github.com/urfave/cli/v2"
|
|
)
|
|
|
|
func QuietMiningLogs() {
|
|
logging.SetLogLevel("miner", "ERROR")
|
|
logging.SetLogLevel("chainstore", "ERROR")
|
|
logging.SetLogLevel("chain", "ERROR")
|
|
logging.SetLogLevel("sub", "ERROR")
|
|
logging.SetLogLevel("storageminer", "ERROR")
|
|
}
|
|
|
|
func RunMultisigTest(t *testing.T, cmds []*lcli.Command, clientNode test.TestNode) {
|
|
ctx := context.Background()
|
|
|
|
// Create mock CLI
|
|
mockCLI := newMockCLI(t, cmds)
|
|
clientCLI := mockCLI.client(clientNode.ListenAddr)
|
|
|
|
// Create some wallets on the node to use for testing multisig
|
|
var walletAddrs []address.Address
|
|
for i := 0; i < 4; i++ {
|
|
addr, err := clientNode.WalletNew(ctx, types.KTSecp256k1)
|
|
require.NoError(t, err)
|
|
|
|
walletAddrs = append(walletAddrs, addr)
|
|
|
|
test.SendFunds(ctx, t, clientNode, addr, types.NewInt(1e15))
|
|
}
|
|
|
|
// Create an msig with three of the addresses and threshold of two sigs
|
|
// msig create --required=2 --duration=50 --value=1000attofil <addr1> <addr2> <addr3>
|
|
amtAtto := types.NewInt(1000)
|
|
threshold := 2
|
|
paramDuration := "--duration=50"
|
|
paramRequired := fmt.Sprintf("--required=%d", threshold)
|
|
paramValue := fmt.Sprintf("--value=%dattofil", amtAtto)
|
|
cmd := []string{
|
|
"msig", "create",
|
|
paramRequired,
|
|
paramDuration,
|
|
paramValue,
|
|
walletAddrs[0].String(),
|
|
walletAddrs[1].String(),
|
|
walletAddrs[2].String(),
|
|
}
|
|
out := clientCLI.runCmd(cmd)
|
|
fmt.Println(out)
|
|
|
|
// Extract msig robust address from output
|
|
expCreateOutPrefix := "Created new multisig:"
|
|
require.Regexp(t, regexp.MustCompile(expCreateOutPrefix), out)
|
|
parts := strings.Split(strings.TrimSpace(strings.Replace(out, expCreateOutPrefix, "", -1)), " ")
|
|
require.Len(t, parts, 2)
|
|
msigRobustAddr := parts[1]
|
|
fmt.Println("msig robust address:", msigRobustAddr)
|
|
|
|
// msig inspect <msig>
|
|
cmd = []string{"msig", "inspect", msigRobustAddr}
|
|
out = clientCLI.runCmd(cmd)
|
|
fmt.Println(out)
|
|
|
|
require.Regexp(t, regexp.MustCompile("Balance: 0.000000000000001 FIL"), out)
|
|
}
|