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  }