github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/bech32/bech32_test.go (about) 1 package bech32_test 2 3 import ( 4 "bytes" 5 "crypto/sha256" 6 "encoding/hex" 7 "testing" 8 9 "github.com/gnolang/gno/tm2/pkg/bech32" 10 "github.com/gnolang/gno/tm2/pkg/crypto" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestEncodeAndDecode(t *testing.T) { 15 t.Parallel() 16 17 sum := sha256.Sum256([]byte("hello world\n")) 18 19 bech, err := bech32.ConvertAndEncode("shasum", sum[:]) 20 if err != nil { 21 t.Error(err) 22 } 23 hrp, data, err := bech32.DecodeAndConvert(bech) 24 if err != nil { 25 t.Error(err) 26 } 27 if hrp != "shasum" { 28 t.Error("Invalid hrp") 29 } 30 if !bytes.Equal(data, sum[:]) { 31 t.Error("Invalid decode") 32 } 33 } 34 35 var pubkeyBech32 = "gpub1pgfj7ard9eg82cjtv4u4xetrwqer2dntxyfzxz3pqg5y7u93gpzug38k2p8s8322zpdm96t0ch87ax88sre4vnclz2jcy8uyhst" 36 37 // amino marshaled pubkey bytes. pubkey.Bytes() 38 var ( 39 pubkeyBytes = "0A132F746D2E5075624B6579536563703235366B3112230A2102284F70B14045C444F6504F03C54A105BB2E96FC5CFEE98E780F3564F1F12A582" 40 pubkeyPrefix = crypto.Bech32PubKeyPrefix 41 ) 42 43 func TestEncode(t *testing.T) { 44 t.Parallel() 45 46 bz, err := hex.DecodeString(pubkeyBytes) 47 48 assert.NoError(t, err) 49 50 p, err := bech32.Encode(pubkeyPrefix, bz) 51 52 assert.Equal(t, pubkeyBech32, p) 53 } 54 55 func TestDecode(t *testing.T) { 56 t.Parallel() 57 58 hrp, b1, err := bech32.Decode(pubkeyBech32) 59 60 assert.NoError(t, err) 61 assert.Equal(t, pubkeyPrefix, hrp) 62 63 b2, err := hex.DecodeString(pubkeyBytes) 64 65 assert.NoError(t, err) 66 assert.Equal(t, b1, b2) 67 }