Skip to content

Commit

Permalink
[FAB-11948] check collection exists before meta put
Browse files Browse the repository at this point in the history
This change set completes the work of [FAB-9997] by performing collection
existence checks before allowing metadata puts for keys in that collection.

Change-Id: I41acf8d7e42a0e8ef4acd68a0a80dc0977d2de0e
Signed-off-by: Alessandro Sorniotti <[email protected]>
  • Loading branch information
ale-linux committed Sep 11, 2018
1 parent 899e0ba commit 8e9d930
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,28 @@ func TestCollectionValidation(t *testing.T) {
err = sim.SetPrivateData("ns1", "coll1", "key1", []byte("val1"))
assert.NoError(t, err)
}

func TestPvtGetNoCollection(t *testing.T) {
testEnv := testEnvs[0]
testEnv.init(t, "test-pvtdata-get-no-collection", nil)
defer testEnv.cleanup()
txMgr := testEnv.getTxMgr().(*LockBasedTxMgr)
queryHelper := newQueryHelper(txMgr, nil)
valueHash, metadataBytes, err := queryHelper.getPrivateDataValueHash("cc", "coll", "key")
assert.Nil(t, valueHash)
assert.Nil(t, metadataBytes)
assert.Error(t, err)
assert.IsType(t, &errCollConfigNotDefined{}, err)
}

func TestPvtPutNoCollection(t *testing.T) {
testEnv := testEnvs[0]
testEnv.init(t, "test-pvtdata-put-no-collection", nil)
defer testEnv.cleanup()
txMgr := testEnv.getTxMgr().(*LockBasedTxMgr)
txsim, err := txMgr.NewTxSimulator("txid")
assert.NoError(t, err)
err = txsim.SetPrivateDataMetadata("cc", "coll", "key", map[string][]byte{})
assert.Error(t, err)
assert.IsType(t, &errCollConfigNotDefined{}, err)
}
3 changes: 3 additions & 0 deletions core/ledger/kvledger/txmgmt/txmgr/lockbasedtxmgr/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,9 @@ func (h *queryHelper) getPrivateData(ns, coll, key string) ([]byte, error) {
}

func (h *queryHelper) getPrivateDataValueHash(ns, coll, key string) (valueHash, metadataBytes []byte, err error) {
if err := h.validateCollName(ns, coll); err != nil {
return nil, nil, err
}
if err := h.checkDone(); err != nil {
return nil, nil, err
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,9 @@ func (s *lockBasedTxSimulator) GetPrivateDataRangeScanIterator(namespace, collec

// SetPrivateDataMetadata implements method in interface `ledger.TxSimulator`
func (s *lockBasedTxSimulator) SetPrivateDataMetadata(namespace, collection, key string, metadata map[string][]byte) error {
if err := s.helper.validateCollName(namespace, collection); err != nil {
return err
}
if err := s.checkWritePrecondition(key, nil); err != nil {
return err
}
Expand Down

0 comments on commit 8e9d930

Please sign in to comment.