go_study/fabric-main/common/channelconfig/realconfig_test.go

82 lines
2.9 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package channelconfig_test
import (
"testing"
"github.com/hyperledger/fabric/bccsp/sw"
"github.com/hyperledger/fabric/common/channelconfig"
"github.com/hyperledger/fabric/core/config/configtest"
"github.com/hyperledger/fabric/internal/configtxgen/encoder"
"github.com/hyperledger/fabric/internal/configtxgen/genesisconfig"
"github.com/hyperledger/fabric/protoutil"
"github.com/stretchr/testify/require"
)
func TestWithRealConfigtx(t *testing.T) {
conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir())
gb := encoder.New(conf).GenesisBlockForChannel("foo")
env := protoutil.ExtractEnvelopeOrPanic(gb, 0)
cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
require.NoError(t, err)
_, err = channelconfig.NewBundleFromEnvelope(env, cryptoProvider)
require.NoError(t, err)
}
func TestOrgSpecificOrdererEndpoints(t *testing.T) {
t.Run("Without_Capability", func(t *testing.T) {
conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir())
conf.Orderer.Addresses = []string{"127.0.0.1:7050"}
conf.Capabilities = map[string]bool{"V1_3": true}
cg, err := encoder.NewChannelGroup(conf)
require.NoError(t, err)
cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
require.NoError(t, err)
_, err = channelconfig.NewChannelConfig(cg, cryptoProvider)
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")
})
t.Run("Without_Capability_NoOSNs", func(t *testing.T) {
conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir())
conf.Capabilities = map[string]bool{"V1_3": true}
conf.Orderer.Organizations[0].OrdererEndpoints = nil
conf.Orderer.Addresses = []string{}
cg, err := encoder.NewChannelGroup(conf)
require.NoError(t, err)
cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
require.NoError(t, err)
_, err = channelconfig.NewChannelConfig(cg, cryptoProvider)
require.EqualError(t, err, "Must set some OrdererAddresses")
})
t.Run("With_Capability", func(t *testing.T) {
conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir())
conf.Capabilities = map[string]bool{"V2_0": true}
require.NotEmpty(t, conf.Orderer.Organizations[0].OrdererEndpoints)
cg, err := encoder.NewChannelGroup(conf)
require.NoError(t, err)
cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
require.NoError(t, err)
cc, err := channelconfig.NewChannelConfig(cg, cryptoProvider)
require.NoError(t, err)
err = cc.Validate(cc.Capabilities())
require.NoError(t, err)
require.NotEmpty(t, cc.OrdererConfig().Organizations()["SampleOrg"].Endpoints)
})
}