82 lines
2.9 KiB
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)
|
|
})
|
|
}
|