go_study/fabric-main/internal/configtxgen/encoder/integration_test.go

72 lines
2.1 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package encoder_test
import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
cb "github.com/hyperledger/fabric-protos-go/common"
"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/pkg/errors"
)
func hasModPolicySet(groupName string, cg *cb.ConfigGroup) error {
if cg.ModPolicy == "" {
return errors.Errorf("group %s has empty mod_policy", groupName)
}
for valueName, value := range cg.Values {
if value.ModPolicy == "" {
return errors.Errorf("group %s has value %s with empty mod_policy", groupName, valueName)
}
}
for policyName, policy := range cg.Policies {
if policy.ModPolicy == "" {
return errors.Errorf("group %s has policy %s with empty mod_policy", groupName, policyName)
}
}
for groupName, group := range cg.Groups {
err := hasModPolicySet(groupName, group)
if err != nil {
return errors.WithMessagef(err, "missing sub-mod_policy for group %s", groupName)
}
}
return nil
}
var _ = Describe("Integration", func() {
DescribeTable("successfully parses the profile",
func(profile string) {
config := genesisconfig.Load(profile, configtest.GetDevConfigDir())
group, err := encoder.NewChannelGroup(config)
Expect(err).NotTo(HaveOccurred())
cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
Expect(err).NotTo(HaveOccurred())
_, err = channelconfig.NewBundle("test", &cb.Config{
ChannelGroup: group,
}, cryptoProvider)
Expect(err).NotTo(HaveOccurred())
err = hasModPolicySet("Channel", group)
Expect(err).NotTo(HaveOccurred())
},
Entry("Sample Insecure Solo Profile", genesisconfig.SampleInsecureSoloProfile),
Entry("Sample Single MSP Solo Profile", genesisconfig.SampleSingleMSPSoloProfile),
Entry("Sample DevMode Solo Profile", genesisconfig.SampleDevModeSoloProfile),
)
})