github.com/MetalBlockchain/metalgo@v1.11.9/vms/proposervm/block/build_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package block 5 6 import ( 7 "crypto" 8 "testing" 9 "time" 10 11 "github.com/stretchr/testify/require" 12 13 "github.com/MetalBlockchain/metalgo/ids" 14 "github.com/MetalBlockchain/metalgo/staking" 15 ) 16 17 func TestBuild(t *testing.T) { 18 require := require.New(t) 19 20 parentID := ids.ID{1} 21 timestamp := time.Unix(123, 0) 22 pChainHeight := uint64(2) 23 innerBlockBytes := []byte{3} 24 chainID := ids.ID{4} 25 26 tlsCert, err := staking.NewTLSCert() 27 require.NoError(err) 28 29 cert, err := staking.ParseCertificate(tlsCert.Leaf.Raw) 30 require.NoError(err) 31 key := tlsCert.PrivateKey.(crypto.Signer) 32 nodeID := ids.NodeIDFromCert(cert) 33 34 builtBlock, err := Build( 35 parentID, 36 timestamp, 37 pChainHeight, 38 cert, 39 innerBlockBytes, 40 chainID, 41 key, 42 ) 43 require.NoError(err) 44 45 require.Equal(parentID, builtBlock.ParentID()) 46 require.Equal(pChainHeight, builtBlock.PChainHeight()) 47 require.Equal(timestamp, builtBlock.Timestamp()) 48 require.Equal(innerBlockBytes, builtBlock.Block()) 49 require.Equal(nodeID, builtBlock.Proposer()) 50 } 51 52 func TestBuildUnsigned(t *testing.T) { 53 parentID := ids.ID{1} 54 timestamp := time.Unix(123, 0) 55 pChainHeight := uint64(2) 56 innerBlockBytes := []byte{3} 57 58 require := require.New(t) 59 60 builtBlock, err := BuildUnsigned(parentID, timestamp, pChainHeight, innerBlockBytes) 61 require.NoError(err) 62 63 require.Equal(parentID, builtBlock.ParentID()) 64 require.Equal(pChainHeight, builtBlock.PChainHeight()) 65 require.Equal(timestamp, builtBlock.Timestamp()) 66 require.Equal(innerBlockBytes, builtBlock.Block()) 67 require.Equal(ids.EmptyNodeID, builtBlock.Proposer()) 68 } 69 70 func TestBuildHeader(t *testing.T) { 71 require := require.New(t) 72 73 chainID := ids.ID{1} 74 parentID := ids.ID{2} 75 bodyID := ids.ID{3} 76 77 builtHeader, err := BuildHeader( 78 chainID, 79 parentID, 80 bodyID, 81 ) 82 require.NoError(err) 83 84 require.Equal(chainID, builtHeader.ChainID()) 85 require.Equal(parentID, builtHeader.ParentID()) 86 require.Equal(bodyID, builtHeader.BodyID()) 87 } 88 89 func TestBuildOption(t *testing.T) { 90 require := require.New(t) 91 92 parentID := ids.ID{1} 93 innerBlockBytes := []byte{3} 94 95 builtOption, err := BuildOption(parentID, innerBlockBytes) 96 require.NoError(err) 97 98 require.Equal(parentID, builtOption.ParentID()) 99 require.Equal(innerBlockBytes, builtOption.Block()) 100 }