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