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  }