72 lines
2.1 KiB
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),
|
|
)
|
|
})
|