github.com/defanghe/fabric@v2.1.1+incompatible/core/ledger/pvtdatapolicy/btlpolicy_test.go (about) 1 /* 2 Copyright IBM Corp. 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/hyperledger/fabric-protos-go/peer" 14 "github.com/hyperledger/fabric/core/common/privdata" 15 "github.com/hyperledger/fabric/core/ledger/pvtdatapolicy/mock" 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func TestBTLPolicy(t *testing.T) { 20 btlPolicy := testutilSampleBTLPolicy() 21 btl1, err := btlPolicy.GetBTL("ns1", "coll1") 22 assert.NoError(t, err) 23 assert.Equal(t, uint64(100), btl1) 24 25 btl2, err := btlPolicy.GetBTL("ns1", "coll2") 26 assert.NoError(t, err) 27 assert.Equal(t, uint64(200), btl2) 28 29 btl3, err := btlPolicy.GetBTL("ns1", "coll3") 30 assert.NoError(t, err) 31 assert.Equal(t, defaultBTL, btl3) 32 33 _, err = btlPolicy.GetBTL("ns1", "coll4") 34 _, ok := err.(privdata.NoSuchCollectionError) 35 assert.True(t, ok) 36 } 37 38 func TestExpiringBlock(t *testing.T) { 39 btlPolicy := testutilSampleBTLPolicy() 40 expiringBlk, err := btlPolicy.GetExpiringBlock("ns1", "coll1", 50) 41 assert.NoError(t, err) 42 assert.Equal(t, uint64(151), expiringBlk) 43 44 expiringBlk, err = btlPolicy.GetExpiringBlock("ns1", "coll2", 50) 45 assert.NoError(t, err) 46 assert.Equal(t, uint64(251), expiringBlk) 47 48 expiringBlk, err = btlPolicy.GetExpiringBlock("ns1", "coll3", 50) 49 assert.NoError(t, err) 50 assert.Equal(t, uint64(math.MaxUint64), expiringBlk) 51 52 expiringBlk, err = btlPolicy.GetExpiringBlock("ns1", "coll4", 50) 53 _, ok := err.(privdata.NoSuchCollectionError) 54 assert.True(t, ok) 55 } 56 57 func testutilSampleBTLPolicy() BTLPolicy { 58 ccInfoRetriever := &mock.CollectionInfoProvider{} 59 ccInfoRetriever.CollectionInfoStub = func(ccName, collName string) (*peer.StaticCollectionConfig, error) { 60 collConfig := &peer.StaticCollectionConfig{} 61 var err error 62 switch collName { 63 case "coll1": 64 collConfig.BlockToLive = 100 65 case "coll2": 66 collConfig.BlockToLive = 200 67 case "coll3": 68 collConfig.BlockToLive = 0 69 default: 70 err = privdata.NoSuchCollectionError{} 71 } 72 return collConfig, err 73 } 74 return ConstructBTLPolicy(ccInfoRetriever) 75 }