github.com/kaituanwang/hyperledger@v2.0.1+incompatible/common/genesis/genesis_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package genesis 8 9 import ( 10 "testing" 11 12 "github.com/gogo/protobuf/proto" 13 cb "github.com/hyperledger/fabric-protos-go/common" 14 "github.com/hyperledger/fabric/protoutil" 15 "github.com/stretchr/testify/assert" 16 ) 17 18 func TestFactory(t *testing.T) { 19 impl := NewFactoryImpl(protoutil.NewConfigGroup()) 20 block := impl.Block("testchannelid") 21 22 t.Run("test for transaction id", func(t *testing.T) { 23 configEnv, _ := protoutil.ExtractEnvelope(block, 0) 24 configEnvPayload, _ := protoutil.UnmarshalPayload(configEnv.Payload) 25 configEnvPayloadChannelHeader, _ := protoutil.UnmarshalChannelHeader(configEnvPayload.GetHeader().ChannelHeader) 26 assert.NotEmpty(t, configEnvPayloadChannelHeader.TxId, "tx_id of configuration transaction should not be empty") 27 }) 28 t.Run("test for last config in SIGNATURES field", func(t *testing.T) { 29 metadata := &cb.Metadata{} 30 err := proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_SIGNATURES], metadata) 31 assert.NoError(t, err) 32 ordererBlockMetadata := &cb.OrdererBlockMetadata{} 33 err = proto.Unmarshal(metadata.Value, ordererBlockMetadata) 34 assert.NoError(t, err) 35 assert.NotNil(t, ordererBlockMetadata.LastConfig) 36 assert.Equal(t, uint64(0), ordererBlockMetadata.LastConfig.Index) 37 }) 38 t.Run("test for last config in LAST_CONFIG field", func(t *testing.T) { 39 metadata := &cb.Metadata{} 40 err := proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_LAST_CONFIG], metadata) 41 assert.NoError(t, err) 42 lastConfig := &cb.LastConfig{} 43 err = proto.Unmarshal(metadata.Value, lastConfig) 44 assert.NoError(t, err) 45 assert.Equal(t, uint64(0), lastConfig.Index) 46 }) 47 }