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  }