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 }