github.com/ewagmig/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  }