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 })