107 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// stm: #unit
 | 
						|
package wallet
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
 | 
						|
	"github.com/filecoin-project/lotus/chain/types"
 | 
						|
)
 | 
						|
 | 
						|
func TestWallet(t *testing.T) {
 | 
						|
 | 
						|
	ctx := context.Background()
 | 
						|
 | 
						|
	w1, err := NewWallet(NewMemKeyStore())
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_NEW_001
 | 
						|
	a1, err := w1.WalletNew(ctx, types.KTSecp256k1)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_HAS_001
 | 
						|
	exists, err := w1.WalletHas(ctx, a1)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	if !exists {
 | 
						|
		t.Fatalf("address doesn't exist in wallet")
 | 
						|
	}
 | 
						|
 | 
						|
	w2, err := NewWallet(NewMemKeyStore())
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	a2, err := w2.WalletNew(ctx, types.KTSecp256k1)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	a3, err := w2.WalletNew(ctx, types.KTSecp256k1)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_LIST_001
 | 
						|
	addrs, err := w2.WalletList(ctx)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	if len(addrs) != 2 {
 | 
						|
		t.Fatalf("wrong number of addresses in wallet")
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_DELETE_001
 | 
						|
	err = w2.WalletDelete(ctx, a2)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_HAS_001
 | 
						|
	exists, err = w2.WalletHas(ctx, a2)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if exists {
 | 
						|
		t.Fatalf("failed to delete wallet address")
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_SET_DEFAULT_001
 | 
						|
	err = w2.SetDefault(a3)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_DEFAULT_ADDRESS_001
 | 
						|
	def, err := w2.GetDefault()
 | 
						|
	if !assert.Equal(t, a3, def) {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_EXPORT_001
 | 
						|
	keyInfo, err := w2.WalletExport(ctx, a3)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	//stm: @TOKEN_WALLET_IMPORT_001
 | 
						|
	addr, err := w2.WalletImport(ctx, keyInfo)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	if addr != a3 {
 | 
						|
		t.Fatalf("imported address doesn't match exported address")
 | 
						|
	}
 | 
						|
 | 
						|
}
 |