48 lines
1.7 KiB
Go
48 lines
1.7 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package genesis
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/golang/protobuf/proto"
|
|
cb "github.com/hyperledger/fabric-protos-go/common"
|
|
"github.com/hyperledger/fabric/protoutil"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestFactory(t *testing.T) {
|
|
impl := NewFactoryImpl(protoutil.NewConfigGroup())
|
|
block := impl.Block("testchannelid")
|
|
|
|
t.Run("test for transaction id", func(t *testing.T) {
|
|
configEnv, _ := protoutil.ExtractEnvelope(block, 0)
|
|
configEnvPayload, _ := protoutil.UnmarshalPayload(configEnv.Payload)
|
|
configEnvPayloadChannelHeader, _ := protoutil.UnmarshalChannelHeader(configEnvPayload.GetHeader().ChannelHeader)
|
|
require.NotEmpty(t, configEnvPayloadChannelHeader.TxId, "tx_id of configuration transaction should not be empty")
|
|
})
|
|
t.Run("test for last config in SIGNATURES field", func(t *testing.T) {
|
|
metadata := &cb.Metadata{}
|
|
err := proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_SIGNATURES], metadata)
|
|
require.NoError(t, err)
|
|
ordererBlockMetadata := &cb.OrdererBlockMetadata{}
|
|
err = proto.Unmarshal(metadata.Value, ordererBlockMetadata)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, ordererBlockMetadata.LastConfig)
|
|
require.Equal(t, uint64(0), ordererBlockMetadata.LastConfig.Index)
|
|
})
|
|
t.Run("test for last config in LAST_CONFIG field", func(t *testing.T) {
|
|
metadata := &cb.Metadata{}
|
|
err := proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_LAST_CONFIG], metadata)
|
|
require.NoError(t, err)
|
|
lastConfig := &cb.LastConfig{}
|
|
err = proto.Unmarshal(metadata.Value, lastConfig)
|
|
require.NoError(t, err)
|
|
require.Equal(t, uint64(0), lastConfig.Index)
|
|
})
|
|
}
|