github.com/yacovm/fabric@v2.0.0-alpha.0.20191128145320-c5d4087dc723+incompatible/core/common/privdata/membershipinfo_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package privdata 8 9 import ( 10 "testing" 11 12 "github.com/hyperledger/fabric-protos-go/peer" 13 "github.com/hyperledger/fabric/common/cauthdsl" 14 "github.com/hyperledger/fabric/msp" 15 "github.com/hyperledger/fabric/protoutil" 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func TestMembershipInfoProvider(t *testing.T) { 20 peerSelfSignedData := protoutil.SignedData{ 21 Identity: []byte("peer0"), 22 Signature: []byte{1, 2, 3}, 23 Data: []byte{4, 5, 6}, 24 } 25 26 identityDeserializer := func(chainID string) msp.IdentityDeserializer { 27 return &mockDeserializer{} 28 } 29 30 // verify membership provider returns true 31 membershipProvider := NewMembershipInfoProvider(peerSelfSignedData, identityDeserializer) 32 res, err := membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer0", "peer1"})) 33 assert.True(t, res) 34 assert.Nil(t, err) 35 36 // verify membership provider returns false 37 res, err = membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer2", "peer3"})) 38 assert.False(t, res) 39 assert.Nil(t, err) 40 41 // verify membership provider returns false and nil when collection policy config is nil 42 res, err = membershipProvider.AmMemberOf("test1", nil) 43 assert.False(t, res) 44 assert.Nil(t, err) 45 46 // verify membership provider returns false and nil when collection policy config is invalid 47 res, err = membershipProvider.AmMemberOf("test1", getBadAccessPolicy([]string{"signer0"}, 1)) 48 assert.False(t, res) 49 assert.Nil(t, err) 50 } 51 52 func getAccessPolicy(signers []string) *peer.CollectionPolicyConfig { 53 var data [][]byte 54 for _, signer := range signers { 55 data = append(data, []byte(signer)) 56 } 57 policyEnvelope := cauthdsl.Envelope(cauthdsl.Or(cauthdsl.SignedBy(0), cauthdsl.SignedBy(1)), data) 58 return createCollectionPolicyConfig(policyEnvelope) 59 } 60 61 func getBadAccessPolicy(signers []string, badIndex int32) *peer.CollectionPolicyConfig { 62 var data [][]byte 63 for _, signer := range signers { 64 data = append(data, []byte(signer)) 65 } 66 // use a out of range index to trigger error 67 policyEnvelope := cauthdsl.Envelope(cauthdsl.Or(cauthdsl.SignedBy(0), cauthdsl.SignedBy(badIndex)), data) 68 return createCollectionPolicyConfig(policyEnvelope) 69 }