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