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 }