github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/account/manager_test.go (about)

     1  package account
     2  
     3  import (
     4  	"testing"
     5  	"fmt"
     6  	"path/filepath"
     7  	"github.com/sixexorg/magnetic-ring/common"
     8  	"github.com/sixexorg/magnetic-ring/crypto"
     9  	"io/ioutil"
    10  	"encoding/json"
    11  	"strings"
    12  )
    13  
    14  func TestAccountManagerImpl_GenerateNormalAccount(t *testing.T) {
    15  	mgr,err := NewManager()
    16  	if err != nil {
    17  		fmt.Println("err0001-->",err)
    18  		return
    19  	}
    20  
    21  	password := "jjjdddkkk"
    22  
    23  	acct,err := mgr.GenerateNormalAccount(password)
    24  	if err != nil {
    25  		fmt.Println("generate normal account error-->",err)
    26  		return
    27  	}
    28  
    29  	pubksrcbuf := acct.PublicKey().Bytes()
    30  
    31  	t.Logf("pubklen=%d,pubk:%x\n",len(pubksrcbuf),pubksrcbuf)
    32  
    33  	pubkbuf := common.Sha256Ripemd160(pubksrcbuf)
    34  
    35  	t.Logf("pubk:%x\n",pubkbuf)
    36  
    37  	bufsss := acct.Address()
    38  
    39  	t.Logf("len=%d,address=%s\n",len(acct.Address().ToString()),bufsss[:])
    40  
    41  
    42  	str := acct.Address().ToString()
    43  
    44  	address,err := common.ToAddress(str)
    45  
    46  	t.Logf("address byte:%T \t %v %v",address,address,bufsss[:])
    47  
    48  
    49  }
    50  
    51  
    52  
    53  func TestAccountManagerImpl_ExportNormalAccount(t *testing.T) {
    54  	mgr,err := NewManager()
    55  	if err != nil {
    56  		fmt.Println("err0001-->",err)
    57  		return
    58  	}
    59  
    60  	customPath := "customPath"
    61  
    62  	password := "jjjdddkkk"
    63  
    64  	acct,err := mgr.GenerateNormalAccount(password)
    65  	if err != nil {
    66  		fmt.Println("generate normal account error-->",err)
    67  		return
    68  	}
    69  
    70  	fullpath := filepath.Join(mgr.keydir, customPath)
    71  
    72  
    73  	err = mgr.ExportNormalAccount(acct,fullpath,password,false)
    74  
    75  	if err != nil {
    76  		fmt.Println("export normal account err-->",err)
    77  		return
    78  	}
    79  
    80  	fmt.Printf("address %s export success\n",acct.Address().ToString())
    81  
    82  }
    83  
    84  func TestAccountManagerImpl_ImportNormalAccount(t *testing.T) {
    85  
    86  	mgr,err := NewManager()
    87  	if err != nil {
    88  		fmt.Println("err0001-->",err)
    89  		return
    90  	}
    91  
    92  	customPath := "customPath"
    93  
    94  	password := "jjjdddkkk"
    95  
    96  	fullpath := filepath.Join(mgr.keydir, customPath)
    97  
    98  
    99  	acct,err := mgr.ImportNormalAccount(fullpath,password)
   100  
   101  	if err != nil {
   102  		fmt.Println("export normal account err-->",err)
   103  		return
   104  	}
   105  
   106  	fmt.Printf("address %s import success\n",acct.ToString())
   107  
   108  }
   109  
   110  func TestAccountManagerImpl_CreateMultipleAccount(t *testing.T) {
   111  	mgr,err := NewManager()
   112  	if err != nil {
   113  		fmt.Println("err0001-->",err)
   114  		return
   115  	}
   116  	password := "jjjdddkkk"
   117  
   118  	normalacct,err := mgr.GenerateNormalAccount(password)
   119  	if err != nil {
   120  		t.Error(err)
   121  	}
   122  
   123  	//memberacct,err := mgr.GenerateNormalAccount(password)
   124  	//if err != nil {
   125  	//	t.Error(err)
   126  	//}
   127  
   128  	normalacct.PublicKey().Bytes()
   129  
   130  	mult := MultiAccountUnit{1,[]crypto.PublicKey{normalacct.PublicKey()}}
   131  
   132  	muls := make(MultiAccountUnits,1)
   133  	muls[0]=mult
   134  
   135  	fmt.Printf("lenlenelelne-->%d\n",len(muls))
   136  
   137  	mulacct,err := mgr.CreateMultipleAccount(normalacct.Address(),muls)
   138  	if err != nil {
   139  		t.Error(err)
   140  		return
   141  	}
   142  	if a, ok :=mulacct.(*MultipleAccountImpl);ok {
   143  		fmt.Printf("mulacct address create success-->%s  -- %s\n", a.Addr.ToString(), a.Address().ToString())
   144  	}
   145  }
   146  
   147  func TestDeseri(t *testing.T)  {
   148  	obj := new(MulPack)
   149  
   150  	norstr := "ct07c9guy3vq7tZ54mX62Bg92BjMzBm8e2v"
   151  	mulstr := "ct1RZR58HT8sn3uqrsjkWwRgJ738bj2z321"
   152  
   153  	mulpath := filepath.Join("keydir/multiaddrdir",norstr, mulstr)
   154  	raw, err := ioutil.ReadFile(mulpath)
   155  	if err != nil {
   156  		fmt.Printf("read file err -->%v\n",err)
   157  		return
   158  	}
   159  
   160  	err = json.Unmarshal(raw,obj)
   161  	if err != nil {
   162  		fmt.Printf("decode err -->%v\n",err)
   163  		return
   164  	}
   165  
   166  	fmt.Printf("obj=%v\n",obj)
   167  
   168  	units,err := obj.Tmplt.ToMultiAccUnits()
   169  
   170  	if err!=nil {
   171  		t.Error(err)
   172  		return
   173  	}
   174  
   175  	decaddr,err := units.Address()
   176  
   177  	if err!=nil {
   178  		t.Error(err)
   179  		return
   180  	}
   181  
   182  	fmt.Printf("deseriaddress-->%s,if equals src=%v\n",decaddr.ToString(),strings.EqualFold(decaddr.ToString(),mulstr))
   183  
   184  }
   185  
   186  func TestAccountManagerImpl_Sign(t *testing.T) {
   187  
   188  
   189  	mgr,err := NewManager()
   190  	if err != nil {
   191  		fmt.Println("err0001-->",err)
   192  		return
   193  	}
   194  
   195  	addrstr := "ct0x2x4jQyMfNrKn5h2ZqYb1m16gymxkmp7"
   196  
   197  	addr,err := common.ToAddress(addrstr)
   198  
   199  	if err != nil {
   200  		t.Error(err)
   201  		return
   202  	}
   203  
   204  
   205  
   206  	password := "jjjdddkkk"
   207  
   208  	na,err := mgr.GetNormalAccount(addr,password)
   209  	if err != nil {
   210  		t.Error(err)
   211  		return
   212  	}
   213  
   214  	raw := []byte("functionissrcoffunc")
   215  
   216  	sig,err := na.Sign(raw)
   217  
   218  	if err != nil {
   219  		t.Error(err)
   220  		return
   221  	}
   222  
   223  	b,err := na.Verify(raw,sig)
   224  
   225  	if err != nil {
   226  		t.Error(err)
   227  		return
   228  	}
   229  
   230  	fmt.Printf("verify result-->%t\n",b)
   231  
   232  }