github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/common/channelconfig/realconfig_test.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package channelconfig_test
     8  
     9  import (
    10  	"testing"
    11  
    12  	"github.com/hechain20/hechain/bccsp/sw"
    13  	"github.com/hechain20/hechain/common/channelconfig"
    14  	"github.com/hechain20/hechain/core/config/configtest"
    15  	"github.com/hechain20/hechain/internal/configtxgen/encoder"
    16  	"github.com/hechain20/hechain/internal/configtxgen/genesisconfig"
    17  	"github.com/hechain20/hechain/protoutil"
    18  	"github.com/stretchr/testify/require"
    19  )
    20  
    21  func TestWithRealConfigtx(t *testing.T) {
    22  	conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir())
    23  
    24  	gb := encoder.New(conf).GenesisBlockForChannel("foo")
    25  	env := protoutil.ExtractEnvelopeOrPanic(gb, 0)
    26  	cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
    27  	require.NoError(t, err)
    28  
    29  	_, err = channelconfig.NewBundleFromEnvelope(env, cryptoProvider)
    30  	require.NoError(t, err)
    31  }
    32  
    33  func TestOrgSpecificOrdererEndpoints(t *testing.T) {
    34  	t.Run("Without_Capability", func(t *testing.T) {
    35  		conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir())
    36  		conf.Orderer.Addresses = []string{"127.0.0.1:7050"}
    37  		conf.Capabilities = map[string]bool{"V1_3": true}
    38  
    39  		cg, err := encoder.NewChannelGroup(conf)
    40  		require.NoError(t, err)
    41  
    42  		cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
    43  		require.NoError(t, err)
    44  		_, err = channelconfig.NewChannelConfig(cg, cryptoProvider)
    45  		require.EqualError(t, err, "could not create channel Orderer sub-group config: Orderer Org SampleOrg cannot contain endpoints value until V1_4_2+ capabilities have been enabled")
    46  	})
    47  
    48  	t.Run("Without_Capability_NoOSNs", func(t *testing.T) {
    49  		conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir())
    50  		conf.Capabilities = map[string]bool{"V1_3": true}
    51  		conf.Orderer.Organizations[0].OrdererEndpoints = nil
    52  		conf.Orderer.Addresses = []string{}
    53  
    54  		cg, err := encoder.NewChannelGroup(conf)
    55  		require.NoError(t, err)
    56  
    57  		cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
    58  		require.NoError(t, err)
    59  		_, err = channelconfig.NewChannelConfig(cg, cryptoProvider)
    60  		require.EqualError(t, err, "Must set some OrdererAddresses")
    61  	})
    62  
    63  	t.Run("With_Capability", func(t *testing.T) {
    64  		conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir())
    65  		conf.Capabilities = map[string]bool{"V2_0": true}
    66  		require.NotEmpty(t, conf.Orderer.Organizations[0].OrdererEndpoints)
    67  
    68  		cg, err := encoder.NewChannelGroup(conf)
    69  		require.NoError(t, err)
    70  
    71  		cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
    72  		require.NoError(t, err)
    73  		cc, err := channelconfig.NewChannelConfig(cg, cryptoProvider)
    74  		require.NoError(t, err)
    75  
    76  		err = cc.Validate(cc.Capabilities())
    77  		require.NoError(t, err)
    78  
    79  		require.NotEmpty(t, cc.OrdererConfig().Organizations()["SampleOrg"].Endpoints)
    80  	})
    81  }