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  }