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  }