github.com/osdi23p228/fabric@v0.0.0-20221218062954-77808885f5db/core/ledger/kvledger/txmgmt/txmgr/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 txmgr 8 9 import ( 10 "testing" 11 12 "github.com/osdi23p228/fabric/core/ledger" 13 "github.com/osdi23p228/fabric/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 func TestPvtPutNoCollection(t *testing.T) { 68 testEnv := testEnvsMap[levelDBtestEnvName] 69 testEnv.init(t, "test-pvtdata-put-no-collection", nil) 70 defer testEnv.cleanup() 71 txMgr := testEnv.getTxMgr() 72 txsim, err := txMgr.NewTxSimulator("txid") 73 require.NoError(t, err) 74 err = txsim.SetPrivateDataMetadata("cc", "coll", "key", map[string][]byte{}) 75 require.Error(t, err) 76 require.IsType(t, &ledger.CollConfigNotDefinedError{}, err) 77 } 78 79 func TestNoCollectionValidationCheck(t *testing.T) { 80 testEnv := testEnvsMap[levelDBtestEnvName] 81 testEnv.init(t, "test-no-collection-validation-check", nil) 82 defer testEnv.cleanup() 83 txMgr := testEnv.getTxMgr() 84 qe, err := txMgr.NewQueryExecutorNoCollChecks() 85 require.NoError(t, err) 86 valueHash, err := qe.GetPrivateDataHash("cc", "coll", "key") 87 require.Nil(t, valueHash) 88 require.NoError(t, err) 89 }