github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/common/policies/implicitmetaparser_test.go (about) 1 /* 2 Copyright hechain. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package policies 8 9 import ( 10 "fmt" 11 "testing" 12 13 "github.com/golang/protobuf/proto" 14 cb "github.com/hyperledger/fabric-protos-go/common" 15 "github.com/stretchr/testify/require" 16 ) 17 18 func TestImplicitMetaParserWrongTokenCount(t *testing.T) { 19 errorMatch := "expected two space separated tokens, but got" 20 21 t.Run("NoArgs", func(t *testing.T) { 22 res, err := ImplicitMetaFromString("") 23 require.Nil(t, res) 24 require.Error(t, err) 25 require.Regexp(t, errorMatch, err.Error()) 26 }) 27 28 t.Run("OneArg", func(t *testing.T) { 29 res, err := ImplicitMetaFromString("ANY") 30 require.Nil(t, res) 31 require.Error(t, err) 32 require.Regexp(t, errorMatch, err.Error()) 33 }) 34 35 t.Run("ThreeArgs", func(t *testing.T) { 36 res, err := ImplicitMetaFromString("ANY of these") 37 require.Nil(t, res) 38 require.Error(t, err) 39 require.Regexp(t, errorMatch, err.Error()) 40 }) 41 } 42 43 func TestImplicitMetaParserBadRule(t *testing.T) { 44 res, err := ImplicitMetaFromString("BAD Rule") 45 require.Nil(t, res) 46 require.Error(t, err) 47 require.Regexp(t, "unknown rule type 'BAD'", err.Error()) 48 } 49 50 func TestImplicitMetaParserGreenPath(t *testing.T) { 51 for _, rule := range []cb.ImplicitMetaPolicy_Rule{cb.ImplicitMetaPolicy_ANY, cb.ImplicitMetaPolicy_ALL, cb.ImplicitMetaPolicy_MAJORITY} { 52 t.Run(rule.String(), func(t *testing.T) { 53 subPolicy := "foo" 54 res, err := ImplicitMetaFromString(fmt.Sprintf("%v %s", rule, subPolicy)) 55 require.NoError(t, err) 56 require.True(t, proto.Equal(res, &cb.ImplicitMetaPolicy{ 57 SubPolicy: subPolicy, 58 Rule: rule, 59 })) 60 }) 61 } 62 }