go_study/fabric-main/common/policies/implicitmetaparser_test.go

63 lines
1.6 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package policies
import (
"fmt"
"testing"
"github.com/golang/protobuf/proto"
cb "github.com/hyperledger/fabric-protos-go/common"
"github.com/stretchr/testify/require"
)
func TestImplicitMetaParserWrongTokenCount(t *testing.T) {
errorMatch := "expected two space separated tokens, but got"
t.Run("NoArgs", func(t *testing.T) {
res, err := ImplicitMetaFromString("")
require.Nil(t, res)
require.Error(t, err)
require.Regexp(t, errorMatch, err.Error())
})
t.Run("OneArg", func(t *testing.T) {
res, err := ImplicitMetaFromString("ANY")
require.Nil(t, res)
require.Error(t, err)
require.Regexp(t, errorMatch, err.Error())
})
t.Run("ThreeArgs", func(t *testing.T) {
res, err := ImplicitMetaFromString("ANY of these")
require.Nil(t, res)
require.Error(t, err)
require.Regexp(t, errorMatch, err.Error())
})
}
func TestImplicitMetaParserBadRule(t *testing.T) {
res, err := ImplicitMetaFromString("BAD Rule")
require.Nil(t, res)
require.Error(t, err)
require.Regexp(t, "unknown rule type 'BAD'", err.Error())
}
func TestImplicitMetaParserGreenPath(t *testing.T) {
for _, rule := range []cb.ImplicitMetaPolicy_Rule{cb.ImplicitMetaPolicy_ANY, cb.ImplicitMetaPolicy_ALL, cb.ImplicitMetaPolicy_MAJORITY} {
t.Run(rule.String(), func(t *testing.T) {
subPolicy := "foo"
res, err := ImplicitMetaFromString(fmt.Sprintf("%v %s", rule, subPolicy))
require.NoError(t, err)
require.True(t, proto.Equal(res, &cb.ImplicitMetaPolicy{
SubPolicy: subPolicy,
Rule: rule,
}))
})
}
}