gitee.com/zhaochuninhefei/fabric-ca-gm@v0.0.2/lib/server/db/sqlite/sqlite_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package sqlite_test
     8  
     9  import (
    10  	"context"
    11  	"errors"
    12  	"os"
    13  
    14  	"gitee.com/zhaochuninhefei/fabric-ca-gm/lib/server/db/sqlite"
    15  	"gitee.com/zhaochuninhefei/fabric-ca-gm/lib/server/db/sqlite/mocks"
    16  	. "github.com/onsi/ginkgo"
    17  	. "github.com/onsi/gomega"
    18  )
    19  
    20  const (
    21  	dbName = "fabric_ca.db"
    22  )
    23  
    24  var _ = Describe("Sqlite", func() {
    25  	var (
    26  		err          error
    27  		db           *sqlite.Sqlite
    28  		mockDB       *mocks.FabricCADB
    29  		mockCreateTx *mocks.Create
    30  	)
    31  
    32  	BeforeEach(func() {
    33  		db = sqlite.NewDB(dbName, "", nil)
    34  		mockDB = &mocks.FabricCADB{}
    35  		mockCreateTx = &mocks.Create{}
    36  	})
    37  
    38  	AfterEach(func() {
    39  		os.Remove(dbName)
    40  	})
    41  
    42  	It("connect to database", func() {
    43  		err := db.Connect()
    44  		Expect(err).NotTo(HaveOccurred())
    45  	})
    46  
    47  	It("returns no error when creating databse", func() {
    48  		err := db.Connect()
    49  		Expect(err).NotTo(HaveOccurred())
    50  		_, err = db.Create()
    51  		Expect(err).NotTo(HaveOccurred())
    52  	})
    53  
    54  	Context("pinging database", func() {
    55  		It("returns an error if unable to ping database", func() {
    56  			mockDB.PingContextReturns(errors.New("ping error"))
    57  			db.SqlxDB = mockDB
    58  
    59  			err := db.PingContext(context.Background())
    60  			Expect(err).To(HaveOccurred())
    61  			Expect(err.Error()).To(Equal("Failed to ping to SQLite database: ping error"))
    62  		})
    63  
    64  		It("returns no error if able to ping database", func() {
    65  			db.SqlxDB = mockDB
    66  
    67  			err := db.PingContext(context.Background())
    68  			Expect(err).NotTo(HaveOccurred())
    69  		})
    70  	})
    71  
    72  	Context("creating tables", func() {
    73  		It("return an error if unable to create users table", func() {
    74  			mockCreateTx.ExecReturnsOnCall(0, nil, errors.New("creating error"))
    75  			db.CreateTx = mockCreateTx
    76  			db.SqlxDB = mockDB
    77  			err = db.CreateTables()
    78  			Expect(err).To(HaveOccurred())
    79  			Expect(err.Error()).To(ContainSubstring("Error creating users table: creating error"))
    80  		})
    81  
    82  		It("return an error if unable to create affiliations table", func() {
    83  			mockCreateTx.ExecReturnsOnCall(1, nil, errors.New("creating error"))
    84  			db.CreateTx = mockCreateTx
    85  			db.SqlxDB = mockDB
    86  			err = db.CreateTables()
    87  			Expect(err).To(HaveOccurred())
    88  			Expect(err.Error()).To(ContainSubstring("Error creating affiliations table: creating error"))
    89  		})
    90  
    91  		It("return an error if unable to create certificates table", func() {
    92  			mockCreateTx.ExecReturnsOnCall(2, nil, errors.New("creating error"))
    93  			db.CreateTx = mockCreateTx
    94  			db.SqlxDB = mockDB
    95  			err = db.CreateTables()
    96  			Expect(err).To(HaveOccurred())
    97  			Expect(err.Error()).To(ContainSubstring("Error creating certificates table: creating error"))
    98  		})
    99  
   100  		It("return an error if unable to create credentials table", func() {
   101  			mockCreateTx.ExecReturnsOnCall(3, nil, errors.New("creating error"))
   102  			db.CreateTx = mockCreateTx
   103  			db.SqlxDB = mockDB
   104  			err = db.CreateTables()
   105  			Expect(err).To(HaveOccurred())
   106  			Expect(err.Error()).To(ContainSubstring("Error creating credentials table: creating error"))
   107  		})
   108  
   109  		It("return an error if unable to create revocation_authority_info table", func() {
   110  			mockCreateTx.ExecReturnsOnCall(4, nil, errors.New("creating error"))
   111  			db.CreateTx = mockCreateTx
   112  			db.SqlxDB = mockDB
   113  			err = db.CreateTables()
   114  			Expect(err).To(HaveOccurred())
   115  			Expect(err.Error()).To(ContainSubstring("Error creating revocation_authority_info table: creating error"))
   116  		})
   117  
   118  		It("return an error if unable to create nonces table", func() {
   119  			mockCreateTx.ExecReturnsOnCall(5, nil, errors.New("creating error"))
   120  			db.CreateTx = mockCreateTx
   121  			db.SqlxDB = mockDB
   122  			err = db.CreateTables()
   123  			Expect(err).To(HaveOccurred())
   124  			Expect(err.Error()).To(ContainSubstring("Error creating nonces table: creating error"))
   125  		})
   126  
   127  		It("return an error if unable to create properties table", func() {
   128  			mockCreateTx.ExecReturnsOnCall(6, nil, errors.New("creating error"))
   129  			db.CreateTx = mockCreateTx
   130  			db.SqlxDB = mockDB
   131  			err = db.CreateTables()
   132  			Expect(err).To(HaveOccurred())
   133  			Expect(err.Error()).To(ContainSubstring("Error creating properties table: creating error"))
   134  		})
   135  
   136  		It("return an error if unable to load properties table with data", func() {
   137  			mockCreateTx.ExecReturnsOnCall(7, nil, errors.New("failed to load data"))
   138  			db.CreateTx = mockCreateTx
   139  			db.SqlxDB = mockDB
   140  			err = db.CreateTables()
   141  			Expect(err).To(HaveOccurred())
   142  			Expect(err.Error()).To(ContainSubstring("Failed to initialize properties table: failed to load data"))
   143  		})
   144  
   145  		It("creates the fabric ca tables", func() {
   146  			db.CreateTx = mockCreateTx
   147  
   148  			db.SqlxDB = mockDB
   149  			err = db.CreateTables()
   150  			Expect(err).NotTo(HaveOccurred())
   151  		})
   152  	})
   153  })