github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/ledger/kvledger/txmgmt/txmgr/collection_val_test.go (about)

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