github.com/adecaro/fabric-ca@v2.0.0-alpha+incompatible/lib/server/db/migrator_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 "fmt" 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/onsi/ginkgo" 17 . "github.com/onsi/gomega" 18 ) 19 20 var _ = Describe("migrator", func() { 21 var ( 22 mockMigrator *mocks.Migrator 23 currentLevels *util.Levels 24 srvLevels *util.Levels 25 ) 26 27 BeforeEach(func() { 28 mockMigrator = &mocks.Migrator{} 29 30 currentLevels = &util.Levels{ 31 Identity: 0, 32 Affiliation: 0, 33 Certificate: 0, 34 Credential: 0, 35 Nonce: 0, 36 RAInfo: 0, 37 } 38 39 srvLevels = &util.Levels{ 40 Identity: 1, 41 Affiliation: 1, 42 Certificate: 1, 43 Credential: 1, 44 Nonce: 1, 45 RAInfo: 1, 46 } 47 }) 48 49 Context("migrating users table", func() { 50 BeforeEach(func() { 51 mockMigrator.MigrateUsersTableReturns(errors.New("failed to migrate")) 52 }) 53 It("rolls back transaction if migration fails", func() { 54 db.Migrate(mockMigrator, currentLevels, srvLevels) 55 Expect(mockMigrator.RollbackCallCount()).To(Equal(1)) 56 }) 57 58 It("returns an error if rolling back transaction fails", func() { 59 mockMigrator.RollbackReturns(errors.New("failed to rollback")) 60 err := db.Migrate(mockMigrator, currentLevels, srvLevels) 61 Expect(err).To(HaveOccurred()) 62 Expect(err.Error()).To(Equal("failed to rollback")) 63 }) 64 }) 65 66 Context("migrating affiliations table", func() { 67 BeforeEach(func() { 68 mockMigrator.MigrateAffiliationsTableReturns(errors.New("failed to migrate")) 69 }) 70 It("rolls back transaction if migration fails", func() { 71 db.Migrate(mockMigrator, currentLevels, srvLevels) 72 Expect(mockMigrator.RollbackCallCount()).To(Equal(1)) 73 }) 74 75 It("returns an error if rolling back transaction fails", func() { 76 mockMigrator.RollbackReturns(errors.New("failed to rollback")) 77 err := db.Migrate(mockMigrator, currentLevels, srvLevels) 78 Expect(err).To(HaveOccurred()) 79 Expect(err.Error()).To(Equal("failed to rollback")) 80 }) 81 }) 82 83 Context("migrating certificates table", func() { 84 BeforeEach(func() { 85 mockMigrator.MigrateCertificatesTableReturns(errors.New("failed to migrate")) 86 }) 87 It("rolls back transaction if migration fails", func() { 88 db.Migrate(mockMigrator, currentLevels, srvLevels) 89 Expect(mockMigrator.RollbackCallCount()).To(Equal(1)) 90 }) 91 92 It("returns an error if rolling back transaction fails", func() { 93 mockMigrator.RollbackReturns(errors.New("failed to rollback")) 94 err := db.Migrate(mockMigrator, currentLevels, srvLevels) 95 Expect(err).To(HaveOccurred()) 96 Expect(err.Error()).To(Equal("failed to rollback")) 97 }) 98 }) 99 100 Context("migrating credentials table", func() { 101 BeforeEach(func() { 102 mockMigrator.MigrateCredentialsTableReturns(errors.New("failed to migrate")) 103 }) 104 It("rolls back transaction if migration fails", func() { 105 db.Migrate(mockMigrator, currentLevels, srvLevels) 106 Expect(mockMigrator.RollbackCallCount()).To(Equal(1)) 107 }) 108 109 It("returns an error if rolling back transaction fails", func() { 110 mockMigrator.RollbackReturns(errors.New("failed to rollback")) 111 err := db.Migrate(mockMigrator, currentLevels, srvLevels) 112 Expect(err).To(HaveOccurred()) 113 Expect(err.Error()).To(Equal("failed to rollback")) 114 }) 115 }) 116 117 Context("migrating nonce table", func() { 118 BeforeEach(func() { 119 mockMigrator.MigrateNoncesTableReturns(errors.New("failed to migrate")) 120 }) 121 It("rolls back transaction if migration fails", func() { 122 db.Migrate(mockMigrator, currentLevels, srvLevels) 123 Expect(mockMigrator.RollbackCallCount()).To(Equal(1)) 124 }) 125 126 It("returns an error if rolling back transaction fails", func() { 127 mockMigrator.RollbackReturns(errors.New("failed to rollback")) 128 err := db.Migrate(mockMigrator, currentLevels, srvLevels) 129 Expect(err).To(HaveOccurred()) 130 Expect(err.Error()).To(Equal("failed to rollback")) 131 }) 132 }) 133 134 Context("migrating rainfo table", func() { 135 BeforeEach(func() { 136 mockMigrator.MigrateRAInfoTableReturns(errors.New("failed to migrate")) 137 }) 138 It("rolls back transaction if migration fails", func() { 139 db.Migrate(mockMigrator, currentLevels, srvLevels) 140 Expect(mockMigrator.RollbackCallCount()).To(Equal(1)) 141 }) 142 143 It("returns an error if rolling back transaction fails", func() { 144 mockMigrator.RollbackReturns(errors.New("failed to rollback")) 145 err := db.Migrate(mockMigrator, currentLevels, srvLevels) 146 Expect(err).To(HaveOccurred()) 147 Expect(err.Error()).To(Equal("failed to rollback")) 148 }) 149 }) 150 151 It("migrates database to the level of the server", func() { 152 err := db.Migrate(mockMigrator, currentLevels, srvLevels) 153 fmt.Println("err: ", err) 154 Expect(err).NotTo(HaveOccurred()) 155 }) 156 })