github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/sdk/auth/keeper_test.go (about)

     1  package auth
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	"github.com/gnolang/gno/tm2/pkg/crypto"
     9  )
    10  
    11  func TestAccountMapperGetSet(t *testing.T) {
    12  	t.Parallel()
    13  
    14  	env := setupTestEnv()
    15  	addr := crypto.AddressFromPreimage([]byte("some-address"))
    16  
    17  	// no account before its created
    18  	acc := env.acck.GetAccount(env.ctx, addr)
    19  	require.Nil(t, acc)
    20  
    21  	// create account and check default values
    22  	acc = env.acck.NewAccountWithAddress(env.ctx, addr)
    23  	require.NotNil(t, acc)
    24  	require.Equal(t, addr, acc.GetAddress())
    25  	require.EqualValues(t, nil, acc.GetPubKey())
    26  	require.EqualValues(t, 0, acc.GetSequence())
    27  
    28  	// NewAccount doesn't call Set, so it's still nil
    29  	require.Nil(t, env.acck.GetAccount(env.ctx, addr))
    30  
    31  	// set some values on the account and save it
    32  	newSequence := uint64(20)
    33  	acc.SetSequence(newSequence)
    34  	env.acck.SetAccount(env.ctx, acc)
    35  
    36  	// check the new values
    37  	acc = env.acck.GetAccount(env.ctx, addr)
    38  	require.NotNil(t, acc)
    39  	require.Equal(t, newSequence, acc.GetSequence())
    40  }
    41  
    42  func TestAccountMapperRemoveAccount(t *testing.T) {
    43  	t.Parallel()
    44  
    45  	env := setupTestEnv()
    46  	addr1 := crypto.AddressFromPreimage([]byte("addr1"))
    47  	addr2 := crypto.AddressFromPreimage([]byte("addr2"))
    48  
    49  	// create accounts
    50  	acc1 := env.acck.NewAccountWithAddress(env.ctx, addr1)
    51  	acc2 := env.acck.NewAccountWithAddress(env.ctx, addr2)
    52  
    53  	accSeq1 := uint64(20)
    54  	accSeq2 := uint64(40)
    55  
    56  	acc1.SetSequence(accSeq1)
    57  	acc2.SetSequence(accSeq2)
    58  	env.acck.SetAccount(env.ctx, acc1)
    59  	env.acck.SetAccount(env.ctx, acc2)
    60  
    61  	acc1 = env.acck.GetAccount(env.ctx, addr1)
    62  	require.NotNil(t, acc1)
    63  	require.Equal(t, accSeq1, acc1.GetSequence())
    64  
    65  	// remove one account
    66  	env.acck.RemoveAccount(env.ctx, acc1)
    67  	acc1 = env.acck.GetAccount(env.ctx, addr1)
    68  	require.Nil(t, acc1)
    69  
    70  	acc2 = env.acck.GetAccount(env.ctx, addr2)
    71  	require.NotNil(t, acc2)
    72  	require.Equal(t, accSeq2, acc2.GetSequence())
    73  }