github.com/Finschia/finschia-sdk@v0.48.1/baseapp/accountwgs_test.go (about) 1 package baseapp 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/Finschia/finschia-sdk/crypto/keys/secp256k1" 9 "github.com/Finschia/finschia-sdk/testutil/testdata" 10 sdk "github.com/Finschia/finschia-sdk/types" 11 ) 12 13 func TestConvertByteSliceToString(t *testing.T) { 14 b := []byte{65, 66, 67, 0, 65, 66, 67} 15 s := string(b) 16 require.Equal(t, len(b), len(s)) 17 require.Equal(t, uint8(0), s[3]) 18 } 19 20 func TestRegister(t *testing.T) { 21 app := setupBaseApp(t) 22 23 privs := newTestPrivKeys(3) 24 tx := newTestTx(privs) 25 26 waits, signals := app.checkAccountWGs.Register(tx) 27 28 require.Equal(t, 0, len(waits)) 29 require.Equal(t, 3, len(signals)) 30 31 for _, signal := range signals { 32 require.Equal(t, app.checkAccountWGs.wgs[signal.acc], signal.wg) 33 } 34 } 35 36 func TestDontPanicWithNil(t *testing.T) { 37 app := setupBaseApp(t) 38 39 require.NotPanics(t, func() { app.checkAccountWGs.Wait(nil) }) 40 require.NotPanics(t, func() { app.checkAccountWGs.Done(nil) }) 41 } 42 43 func TestGetUniqSigners(t *testing.T) { 44 privs := newTestPrivKeys(3) 45 46 addrs := getAddrs(privs) 47 addrs = append(addrs, addrs[1], addrs[0]) 48 require.Equal(t, 5, len(addrs)) 49 50 tx := newTestTx(privs) 51 signers := getUniqSigners(tx) 52 53 // length should be reduced because `duplicated` is removed 54 require.Less(t, len(signers), len(addrs)) 55 56 // check uniqueness 57 for i, iv := range signers { 58 for j, jv := range signers { 59 if i != j { 60 require.True(t, iv != jv) 61 } 62 } 63 } 64 } 65 66 type AccountLockTestTx struct { 67 Msgs []sdk.Msg 68 } 69 70 var _ sdk.Tx = AccountLockTestTx{} 71 72 func (tx AccountLockTestTx) GetMsgs() []sdk.Msg { 73 return tx.Msgs 74 } 75 76 func (tx AccountLockTestTx) ValidateBasic() error { 77 return nil 78 } 79 80 func newTestPrivKeys(num int) []*secp256k1.PrivKey { 81 privs := make([]*secp256k1.PrivKey, 0, num) 82 for i := 0; i < num; i++ { 83 privs = append(privs, secp256k1.GenPrivKey()) 84 } 85 return privs 86 } 87 88 func getAddrs(privs []*secp256k1.PrivKey) []sdk.AccAddress { 89 addrs := make([]sdk.AccAddress, 0, len(privs)) 90 for _, priv := range privs { 91 addrs = append(addrs, sdk.AccAddress(priv.PubKey().Address())) 92 } 93 return addrs 94 } 95 96 func newTestTx(privs []*secp256k1.PrivKey) sdk.Tx { 97 addrs := getAddrs(privs) 98 msgs := make([]sdk.Msg, len(addrs)) 99 for i, addr := range addrs { 100 msgs[i] = testdata.NewTestMsg(addr) 101 } 102 return AccountLockTestTx{Msgs: msgs} 103 }