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

55 lines
1.3 KiB
Go

/*
Copyright IBM Corp. 2017 All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package channelconfig
import (
"testing"
"github.com/golang/protobuf/proto"
cb "github.com/hyperledger/fabric-protos-go/common"
"github.com/hyperledger/fabric/common/capabilities"
"github.com/hyperledger/fabric/protoutil"
. "github.com/onsi/gomega"
)
func TestApplicationInterface(t *testing.T) {
_ = Application((*ApplicationConfig)(nil))
}
func TestACL(t *testing.T) {
g := NewGomegaWithT(t)
cgt := &cb.ConfigGroup{
Values: map[string]*cb.ConfigValue{
ACLsKey: {
Value: protoutil.MarshalOrPanic(
ACLValues(map[string]string{}).Value(),
),
},
CapabilitiesKey: {
Value: protoutil.MarshalOrPanic(
CapabilitiesValue(map[string]bool{
capabilities.ApplicationV1_2: true,
}).Value(),
),
},
},
}
t.Run("Success", func(t *testing.T) {
cg := proto.Clone(cgt).(*cb.ConfigGroup)
_, err := NewApplicationConfig(proto.Clone(cg).(*cb.ConfigGroup), nil)
g.Expect(err).NotTo(HaveOccurred())
})
t.Run("MissingCapability", func(t *testing.T) {
cg := proto.Clone(cgt).(*cb.ConfigGroup)
delete(cg.Values, CapabilitiesKey)
_, err := NewApplicationConfig(cg, nil)
g.Expect(err).To(MatchError("ACLs may not be specified without the required capability"))
})
}