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 }