github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/ledger/pvtdatapolicy/btlpolicy_test.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package pvtdatapolicy
     8  
     9  import (
    10  	"math"
    11  	"testing"
    12  
    13  	"github.com/hechain20/hechain/core/common/privdata"
    14  	"github.com/hechain20/hechain/core/ledger/pvtdatapolicy/mock"
    15  	"github.com/hyperledger/fabric-protos-go/peer"
    16  	"github.com/stretchr/testify/require"
    17  )
    18  
    19  func TestBTLPolicy(t *testing.T) {
    20  	btlPolicy := testutilSampleBTLPolicy()
    21  	btl1, err := btlPolicy.GetBTL("ns1", "coll1")
    22  	require.NoError(t, err)
    23  	require.Equal(t, uint64(100), btl1)
    24  
    25  	btl2, err := btlPolicy.GetBTL("ns1", "coll2")
    26  	require.NoError(t, err)
    27  	require.Equal(t, uint64(200), btl2)
    28  
    29  	btl3, err := btlPolicy.GetBTL("ns1", "coll3")
    30  	require.NoError(t, err)
    31  	require.Equal(t, defaultBTL, btl3)
    32  
    33  	_, err = btlPolicy.GetBTL("ns1", "coll4")
    34  	_, ok := err.(privdata.NoSuchCollectionError)
    35  	require.True(t, ok)
    36  }
    37  
    38  func TestExpiringBlock(t *testing.T) {
    39  	btlPolicy := testutilSampleBTLPolicy()
    40  	expiringBlk, err := btlPolicy.GetExpiringBlock("ns1", "coll1", 50)
    41  	require.NoError(t, err)
    42  	require.Equal(t, uint64(151), expiringBlk)
    43  
    44  	expiringBlk, err = btlPolicy.GetExpiringBlock("ns1", "coll2", 50)
    45  	require.NoError(t, err)
    46  	require.Equal(t, uint64(251), expiringBlk)
    47  
    48  	expiringBlk, err = btlPolicy.GetExpiringBlock("ns1", "coll3", 50)
    49  	require.NoError(t, err)
    50  	require.Equal(t, uint64(math.MaxUint64), expiringBlk)
    51  
    52  	_, err = btlPolicy.GetExpiringBlock("ns1", "coll4", 50)
    53  	require.Error(t, err)
    54  	_, ok := err.(privdata.NoSuchCollectionError)
    55  	require.True(t, ok)
    56  }
    57  
    58  func testutilSampleBTLPolicy() BTLPolicy {
    59  	ccInfoRetriever := &mock.CollectionInfoProvider{}
    60  	ccInfoRetriever.CollectionInfoStub = func(ccName, collName string) (*peer.StaticCollectionConfig, error) {
    61  		collConfig := &peer.StaticCollectionConfig{}
    62  		var err error
    63  		switch collName {
    64  		case "coll1":
    65  			collConfig.BlockToLive = 100
    66  		case "coll2":
    67  			collConfig.BlockToLive = 200
    68  		case "coll3":
    69  			collConfig.BlockToLive = 0
    70  		default:
    71  			err = privdata.NoSuchCollectionError{}
    72  		}
    73  		return collConfig, err
    74  	}
    75  	return ConstructBTLPolicy(ccInfoRetriever)
    76  }