github.com/anjalikarhana/fabric@v2.1.1+incompatible/internal/configtxgen/encoder/integration_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package encoder_test
     8  
     9  import (
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/ginkgo/extensions/table"
    12  	. "github.com/onsi/gomega"
    13  
    14  	cb "github.com/hyperledger/fabric-protos-go/common"
    15  	"github.com/hyperledger/fabric/bccsp/sw"
    16  	"github.com/hyperledger/fabric/common/channelconfig"
    17  	"github.com/hyperledger/fabric/core/config/configtest"
    18  	"github.com/hyperledger/fabric/internal/configtxgen/encoder"
    19  	"github.com/hyperledger/fabric/internal/configtxgen/genesisconfig"
    20  
    21  	"github.com/pkg/errors"
    22  )
    23  
    24  func hasModPolicySet(groupName string, cg *cb.ConfigGroup) error {
    25  	if cg.ModPolicy == "" {
    26  		return errors.Errorf("group %s has empty mod_policy", groupName)
    27  	}
    28  
    29  	for valueName, value := range cg.Values {
    30  		if value.ModPolicy == "" {
    31  			return errors.Errorf("group %s has value %s with empty mod_policy", groupName, valueName)
    32  		}
    33  	}
    34  
    35  	for policyName, policy := range cg.Policies {
    36  		if policy.ModPolicy == "" {
    37  			return errors.Errorf("group %s has policy %s with empty mod_policy", groupName, policyName)
    38  		}
    39  	}
    40  
    41  	for groupName, group := range cg.Groups {
    42  		err := hasModPolicySet(groupName, group)
    43  		if err != nil {
    44  			return errors.WithMessagef(err, "missing sub-mod_policy for group %s", groupName)
    45  		}
    46  	}
    47  
    48  	return nil
    49  }
    50  
    51  var _ = Describe("Integration", func() {
    52  	DescribeTable("successfully parses the profile",
    53  		func(profile string) {
    54  			config := genesisconfig.Load(profile, configtest.GetDevConfigDir())
    55  			group, err := encoder.NewChannelGroup(config)
    56  			Expect(err).NotTo(HaveOccurred())
    57  
    58  			cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
    59  			Expect(err).NotTo(HaveOccurred())
    60  			_, err = channelconfig.NewBundle("test", &cb.Config{
    61  				ChannelGroup: group,
    62  			}, cryptoProvider)
    63  			Expect(err).NotTo(HaveOccurred())
    64  
    65  			err = hasModPolicySet("Channel", group)
    66  			Expect(err).NotTo(HaveOccurred())
    67  		},
    68  		Entry("Sample Insecure Solo Profile", genesisconfig.SampleInsecureSoloProfile),
    69  		Entry("Sample Single MSP Solo Profile", genesisconfig.SampleSingleMSPSoloProfile),
    70  		Entry("Sample DevMode Solo Profile", genesisconfig.SampleDevModeSoloProfile),
    71  		Entry("Sample Insecure Kafka Profile", genesisconfig.SampleInsecureKafkaProfile),
    72  		Entry("Sample Single MSP Kafka Profile", genesisconfig.SampleSingleMSPKafkaProfile),
    73  		Entry("Sample DevMode Kafka Profile", genesisconfig.SampleDevModeKafkaProfile),
    74  	)
    75  })