github.com/defanghe/fabric@v2.1.1+incompatible/core/ledger/kvledger/txmgmt/txmgr/lockbasedtxmgr/collection_val_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package lockbasedtxmgr
     8  
     9  import (
    10  	"testing"
    11  
    12  	"github.com/hyperledger/fabric/bccsp/sw"
    13  	"github.com/hyperledger/fabric/core/ledger"
    14  	"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/version"
    15  	"github.com/stretchr/testify/assert"
    16  )
    17  
    18  func TestCollectionValidation(t *testing.T) {
    19  	testEnv := testEnvsMap[levelDBtestEnvName]
    20  	testEnv.init(t, "testLedger", nil)
    21  	defer testEnv.cleanup()
    22  	txMgr := testEnv.getTxMgr()
    23  	populateCollConfigForTest(t, txMgr.(*LockBasedTxMgr),
    24  		[]collConfigkey{
    25  			{"ns1", "coll1"},
    26  			{"ns1", "coll2"},
    27  			{"ns2", "coll1"},
    28  			{"ns2", "coll2"},
    29  		},
    30  		version.NewHeight(1, 1),
    31  	)
    32  
    33  	sim, err := txMgr.NewTxSimulator("tx-id1")
    34  	assert.NoError(t, err)
    35  
    36  	_, err = sim.GetPrivateData("ns3", "coll1", "key1")
    37  	_, ok := err.(*ledger.CollConfigNotDefinedError)
    38  	assert.True(t, ok)
    39  
    40  	err = sim.SetPrivateData("ns3", "coll1", "key1", []byte("val1"))
    41  	_, ok = err.(*ledger.CollConfigNotDefinedError)
    42  	assert.True(t, ok)
    43  
    44  	_, err = sim.GetPrivateData("ns1", "coll3", "key1")
    45  	_, ok = err.(*ledger.InvalidCollNameError)
    46  	assert.True(t, ok)
    47  
    48  	err = sim.SetPrivateData("ns1", "coll3", "key1", []byte("val1"))
    49  	_, ok = err.(*ledger.InvalidCollNameError)
    50  	assert.True(t, ok)
    51  
    52  	err = sim.SetPrivateData("ns1", "coll1", "key1", []byte("val1"))
    53  	assert.NoError(t, err)
    54  }
    55  
    56  func TestPvtGetNoCollection(t *testing.T) {
    57  	testEnv := testEnvsMap[levelDBtestEnvName]
    58  	testEnv.init(t, "test-pvtdata-get-no-collection", nil)
    59  	defer testEnv.cleanup()
    60  	txMgr := testEnv.getTxMgr().(*LockBasedTxMgr)
    61  	cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
    62  	assert.NoError(t, err)
    63  	queryHelper := newQueryHelper(txMgr, nil, true, cryptoProvider)
    64  	valueHash, metadataBytes, err := queryHelper.getPrivateDataValueHash("cc", "coll", "key")
    65  	assert.Nil(t, valueHash)
    66  	assert.Nil(t, metadataBytes)
    67  	assert.Error(t, err)
    68  	assert.IsType(t, &ledger.CollConfigNotDefinedError{}, err)
    69  }
    70  func TestPvtPutNoCollection(t *testing.T) {
    71  	testEnv := testEnvsMap[levelDBtestEnvName]
    72  	testEnv.init(t, "test-pvtdata-put-no-collection", nil)
    73  	defer testEnv.cleanup()
    74  	txMgr := testEnv.getTxMgr().(*LockBasedTxMgr)
    75  	txsim, err := txMgr.NewTxSimulator("txid")
    76  	assert.NoError(t, err)
    77  	err = txsim.SetPrivateDataMetadata("cc", "coll", "key", map[string][]byte{})
    78  	assert.Error(t, err)
    79  	assert.IsType(t, &ledger.CollConfigNotDefinedError{}, err)
    80  }
    81  
    82  func TestNoCollectionValidationCheck(t *testing.T) {
    83  	testEnv := testEnvsMap[levelDBtestEnvName]
    84  	testEnv.init(t, "test-no-collection-validation-check", nil)
    85  	defer testEnv.cleanup()
    86  	txMgr := testEnv.getTxMgr().(*LockBasedTxMgr)
    87  	qe, err := txMgr.NewQueryExecutorNoCollChecks()
    88  	assert.NoError(t, err)
    89  	valueHash, err := qe.GetPrivateDataHash("cc", "coll", "key")
    90  	assert.Nil(t, valueHash)
    91  	assert.NoError(t, err)
    92  }