github.com/adecaro/fabric-ca@v2.0.0-alpha+incompatible/lib/server/db/tx_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package db_test 8 9 import ( 10 "errors" 11 "testing" 12 13 "github.com/hyperledger/fabric-ca/lib/server/db" 14 "github.com/hyperledger/fabric-ca/lib/server/db/mocks" 15 "github.com/hyperledger/fabric/common/metrics/disabled" 16 "github.com/jmoiron/sqlx" 17 . "github.com/onsi/gomega" 18 ) 19 20 func TestTX(t *testing.T) { 21 gt := NewGomegaWithT(t) 22 23 mockDB := &mocks.SqlxDB{} 24 fabDB := db.New(mockDB, "", &disabled.Provider{}) 25 mockTX := &mocks.SqlxTx{} 26 fabTx := &db.TX{ 27 TX: mockTX, 28 Record: fabDB, 29 } 30 gt.Expect(fabTx).NotTo(BeNil()) 31 32 // Select 33 mockTX.SelectReturns(nil) 34 err := fabTx.Select("", nil, "") 35 gt.Expect(err).NotTo(HaveOccurred()) 36 37 mockTX.SelectReturns(errors.New("Select Error")) 38 err = fabTx.Select("", nil, "") 39 gt.Expect(err).To(HaveOccurred()) 40 gt.Expect(err.Error()).To(Equal("Select Error")) 41 42 // Exec 43 mockResult := &mocks.Result{} 44 mockResult.On("RowsAffected").Return(int64(2), nil) 45 mockTX.ExecReturns(mockResult, nil) 46 res, err := fabTx.Exec("", "") 47 gt.Expect(err).NotTo(HaveOccurred()) 48 49 rows, err := res.RowsAffected() 50 gt.Expect(err).NotTo(HaveOccurred()) 51 gt.Expect(rows).To(Equal(int64(2))) 52 53 mockTX.ExecReturns(nil, errors.New("Exec Error")) 54 res, err = fabTx.Exec("", "") 55 gt.Expect(err).To(HaveOccurred()) 56 gt.Expect(err.Error()).To(Equal("Exec Error")) 57 58 // Get 59 mockTX.GetReturns(nil) 60 err = fabTx.Get("", nil, "") 61 gt.Expect(err).NotTo(HaveOccurred()) 62 63 mockTX.GetReturns(errors.New("Get Error")) 64 err = fabTx.Get("", nil, "") 65 gt.Expect(err.Error()).To(Equal("Get Error")) 66 67 // Queryx 68 mockTX.QueryxReturns(&sqlx.Rows{}, nil) 69 r, err := fabTx.Queryx("", "") 70 gt.Expect(err).NotTo(HaveOccurred()) 71 gt.Expect(r).NotTo(BeNil()) 72 73 mockTX.QueryxReturns(nil, errors.New("Queryx Error")) 74 _, err = fabTx.Queryx("", "") 75 gt.Expect(err.Error()).To(Equal("Queryx Error")) 76 77 // Rebind 78 mockTX.RebindReturns("Select * from") 79 query := fabTx.Rebind("") 80 gt.Expect(query).To(Equal("Select * from")) 81 82 // Commit 83 mockTX.CommitReturns(nil) 84 err = fabTx.Commit("") 85 gt.Expect(err).NotTo(HaveOccurred()) 86 87 mockTX.CommitReturns(errors.New("commit error")) 88 err = fabTx.Commit("") 89 gt.Expect(err).To(HaveOccurred()) 90 gt.Expect(err.Error()).To(Equal("commit error")) 91 92 // Rollback 93 mockTX.RollbackReturns(nil) 94 err = fabTx.Rollback("") 95 gt.Expect(err).NotTo(HaveOccurred()) 96 97 mockTX.RollbackReturns(errors.New("rollback error")) 98 err = fabTx.Rollback("") 99 gt.Expect(err).To(HaveOccurred()) 100 gt.Expect(err.Error()).To(Equal("rollback error")) 101 }