github.com/adecaro/fabric-ca@v2.0.0-alpha+incompatible/lib/server/db/db_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-ca/lib/server/db/util" 16 "github.com/hyperledger/fabric/common/metrics/disabled" 17 "github.com/jmoiron/sqlx" 18 . "github.com/onsi/gomega" 19 ) 20 21 func TestDB(t *testing.T) { 22 gt := NewGomegaWithT(t) 23 24 mockDB := &mocks.SqlxDB{} 25 fabDB := db.New(mockDB, "", &disabled.Provider{}) 26 gt.Expect(fabDB).NotTo(BeNil()) 27 28 mockDB.MustBeginReturns(&sqlx.Tx{}) 29 tx := fabDB.BeginTx() 30 gt.Expect(tx).NotTo(BeNil()) 31 32 fabDB.IsDBInitialized = true 33 b := fabDB.IsInitialized() 34 gt.Expect(b).To(Equal(true)) 35 36 fabDB.SetDBInitialized(false) 37 gt.Expect(fabDB.IsDBInitialized).To(Equal(false)) 38 39 // Select 40 mockDB.SelectReturns(nil) 41 err := fabDB.Select("", nil, "") 42 gt.Expect(err).NotTo(HaveOccurred()) 43 44 mockDB.SelectReturns(errors.New("Select Error")) 45 err = fabDB.Select("", nil, "") 46 gt.Expect(err.Error()).To(Equal("Select Error")) 47 48 // Exec 49 mockResult := &mocks.Result{} 50 mockResult.On("RowsAffected").Return(int64(2), nil) 51 mockDB.ExecReturns(mockResult, nil) 52 res, err := fabDB.DB.Exec("", "") 53 gt.Expect(err).NotTo(HaveOccurred()) 54 55 rows, err := res.RowsAffected() 56 gt.Expect(err).NotTo(HaveOccurred()) 57 gt.Expect(rows).To(Equal(int64(2))) 58 59 mockDB.ExecReturns(nil, errors.New("Exec Error")) 60 res, err = fabDB.Exec("", "") 61 gt.Expect(err).To(HaveOccurred()) 62 gt.Expect(err.Error()).To(Equal("Exec Error")) 63 64 // NamedExec 65 mockResult = &mocks.Result{} 66 mockResult.On("RowsAffected").Return(int64(3), nil) 67 mockDB.NamedExecReturns(mockResult, nil) 68 res, err = fabDB.NamedExec("", "", nil) 69 gt.Expect(err).NotTo(HaveOccurred()) 70 71 rows, err = res.RowsAffected() 72 gt.Expect(err).NotTo(HaveOccurred()) 73 gt.Expect(rows).To(Equal(int64(3))) 74 75 mockDB.NamedExecReturns(nil, errors.New("NamedExec Error")) 76 res, err = fabDB.NamedExec("", "", nil) 77 gt.Expect(err).To(HaveOccurred()) 78 gt.Expect(err.Error()).To(Equal("NamedExec Error")) 79 80 // Get 81 mockDB.GetReturns(nil) 82 err = fabDB.Get("", nil, "") 83 gt.Expect(err).NotTo(HaveOccurred()) 84 85 mockDB.GetReturns(errors.New("Get Error")) 86 err = fabDB.Get("", nil, "") 87 gt.Expect(err.Error()).To(Equal("Get Error")) 88 89 // Queryx 90 mockDB.QueryxReturns(&sqlx.Rows{}, nil) 91 r, err := fabDB.Queryx("", "") 92 gt.Expect(err).NotTo(HaveOccurred()) 93 gt.Expect(r).NotTo(BeNil()) 94 95 mockDB.QueryxReturns(nil, errors.New("Queryx Error")) 96 _, err = fabDB.Queryx("", "") 97 gt.Expect(err.Error()).To(Equal("Queryx Error")) 98 99 // DriverName 100 mockDB.DriverNameReturns("sqlite3") 101 driverName := fabDB.DriverName() 102 gt.Expect(driverName).To(Equal("sqlite3")) 103 104 // Rebind 105 mockDB.RebindReturns("Select * from") 106 query := fabDB.Rebind("") 107 gt.Expect(query).To(Equal("Select * from")) 108 } 109 110 func TestCurrentDBLevels(t *testing.T) { 111 gt := NewGomegaWithT(t) 112 113 mockFabricCADB := &mocks.FabricCADB{} 114 mockFabricCADB.GetReturns(errors.New("failed to get levels")) 115 116 _, err := db.CurrentDBLevels(mockFabricCADB) 117 gt.Expect(err).To(HaveOccurred()) 118 gt.Expect(err.Error()).To(Equal("failed to get levels")) 119 120 mockFabricCADB = &mocks.FabricCADB{} 121 levels, err := db.CurrentDBLevels(mockFabricCADB) 122 gt.Expect(err).NotTo(HaveOccurred()) 123 gt.Expect(levels).To(Equal(&util.Levels{0, 0, 0, 0, 0, 0})) 124 }