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  }