decred.org/dcrwallet/v3@v3.1.0/wallet/udb/common_test.go (about) 1 // Copyright (c) 2014 The btcsuite developers 2 // Copyright (c) 2015-2017 The Decred developers 3 // Use of this source code is governed by an ISC 4 // license that can be found in the LICENSE file. 5 6 package udb 7 8 import ( 9 "context" 10 "encoding/hex" 11 "fmt" 12 "os" 13 14 "decred.org/dcrwallet/v3/wallet/walletdb" 15 "github.com/decred/dcrd/chaincfg/v3" 16 ) 17 18 var ( 19 // seed is the master seed used throughout the tests. 20 seed = []byte{ 21 0xb4, 0x6b, 0xc6, 0x50, 0x2a, 0x30, 0xbe, 0xb9, 0x2f, 22 0x0a, 0xeb, 0xc7, 0x76, 0x40, 0x3c, 0x3d, 0xbf, 0x11, 23 0xbf, 0xb6, 0x83, 0x05, 0x96, 0x7c, 0x36, 0xda, 0xc9, 24 0xef, 0x8d, 0x64, 0x15, 0x67, 25 } 26 27 emptyDbPath = "" 28 29 pubPassphrase = []byte("_DJr{fL4H0O}*-0\n:V1izc)(6BomK") 30 privPassphrase = []byte("81lUHXnOMZ@?XXd7O9xyDIWIbXX-lj") 31 pubPassphrase2 = []byte("-0NV4P~VSJBWbunw}%<Z]fuGpbN[ZI") 32 privPassphrase2 = []byte("~{<]08%6!-?2s<$(8$8:f(5[4/!/{Y") 33 ) 34 35 // hexToBytes is a wrapper around hex.DecodeString that panics if there is an 36 // error. It MUST only be used with hard coded values in the tests. 37 func hexToBytes(origHex string) []byte { 38 buf, err := hex.DecodeString(origHex) 39 if err != nil { 40 panic(err) 41 } 42 return buf 43 } 44 45 // createEmptyDB is a helper function for creating an empty wallet db. 46 func createEmptyDB(ctx context.Context) error { 47 db, err := walletdb.Create("bdb", emptyDbPath) 48 if err != nil { 49 return err 50 } 51 defer db.Close() 52 53 err = Initialize(ctx, db, chaincfg.TestNet3Params(), seed, pubPassphrase, 54 privPassphrase) 55 if err != nil { 56 return err 57 } 58 59 err = Upgrade(ctx, db, pubPassphrase, chaincfg.TestNet3Params()) 60 if err != nil { 61 return err 62 } 63 64 return nil 65 } 66 67 // cloneDB makes a copy of an empty wallet db. It returns a wallet db, store, a 68 // stake store and a teardown function. 69 func cloneDB(ctx context.Context, cloneName string) (walletdb.DB, *Manager, *Store, *StakeStore, func(), error) { 70 file, err := os.ReadFile(emptyDbPath) 71 if err != nil { 72 return nil, nil, nil, nil, nil, fmt.Errorf("unexpected error: %v", err) 73 } 74 75 err = os.WriteFile(cloneName, file, 0644) 76 if err != nil { 77 return nil, nil, nil, nil, nil, fmt.Errorf("unexpected error: %v", err) 78 } 79 80 db, err := walletdb.Open("bdb", cloneName) 81 if err != nil { 82 return nil, nil, nil, nil, nil, fmt.Errorf("unexpected error: %v", err) 83 } 84 85 mgr, txStore, stkStore, err := Open(ctx, db, chaincfg.TestNet3Params(), pubPassphrase) 86 if err != nil { 87 return nil, nil, nil, nil, nil, fmt.Errorf("unexpected error: %v", err) 88 } 89 90 teardown := func() { 91 os.Remove(cloneName) 92 db.Close() 93 } 94 95 return db, mgr, txStore, stkStore, teardown, err 96 }