github.com/IBM-Blockchain/fabric-operator@v1.0.4/pkg/offering/common/reconcilechecks/images/fabricversion_test.go (about) 1 /* 2 * Copyright contributors to the Hyperledger Fabric Operator project 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at: 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 package images_test 20 21 import ( 22 . "github.com/onsi/ginkgo/v2" 23 . "github.com/onsi/gomega" 24 25 current "github.com/IBM-Blockchain/fabric-operator/api/v1beta1" 26 config "github.com/IBM-Blockchain/fabric-operator/operatorconfig" 27 "github.com/IBM-Blockchain/fabric-operator/pkg/apis/deployer" 28 "github.com/IBM-Blockchain/fabric-operator/pkg/offering/common/reconcilechecks/images" 29 ) 30 31 var _ = Describe("fabric version", func() { 32 var ( 33 fv *images.FabricVersion 34 operatorCfg *config.Operator 35 ) 36 37 BeforeEach(func() { 38 operatorCfg = &config.Operator{ 39 Versions: &deployer.Versions{ 40 CA: map[string]deployer.VersionCA{ 41 "1.4.9-0": { 42 Default: false, 43 Version: "1.4.9-0", 44 Image: deployer.CAImages{ 45 CAImage: "caimage", 46 CATag: "catag", 47 CAInitImage: "cainitimage", 48 CAInitTag: "cainittag", 49 EnrollerImage: "enrolleriamge", 50 EnrollerTag: "enrollertag", 51 }, 52 }, 53 "1.4.9-1": { 54 Default: true, 55 Version: "1.4.9-1", 56 Image: deployer.CAImages{ 57 CAImage: "caimage", 58 CATag: "newcatag", 59 CAInitImage: "cainitimage", 60 CAInitTag: "cainittag", 61 EnrollerImage: "enrolleriamge", 62 EnrollerTag: "enrollertag", 63 }, 64 }, 65 }, 66 Peer: map[string]deployer.VersionPeer{ 67 "1.4.9-0": { 68 Default: true, 69 Version: "1.4.9-0", 70 Image: deployer.PeerImages{ 71 PeerInitImage: "ibp-init", 72 PeerInitTag: "2.5.1-2511004-amd64", 73 PeerImage: "ibp-peer", 74 PeerTag: "1.4.9-2511004-amd64", 75 DindImage: "ibp-dind", 76 DindTag: "noimages-amd64", 77 CouchDBImage: "ibp-couchdb", 78 CouchDBTag: "2.3.1-2511004-amd64", 79 GRPCWebImage: "ibp-grpcweb", 80 GRPCWebTag: "2.5.1-2511004-amd64", 81 FluentdImage: "ibp-fluentd", 82 FluentdTag: "2.5.1-2511004-amd64", 83 EnrollerImage: "ibp-enroller", 84 EnrollerTag: "1.0.0-amd64", 85 }, 86 }, 87 "2.2.1-0": { 88 Default: false, 89 Version: "2.2.1-0", 90 Image: deployer.PeerImages{ 91 PeerInitImage: "ibp-init", 92 PeerInitTag: "2.5.1-2511004-amd64", 93 PeerImage: "ibp-peer", 94 PeerTag: "2.2.1-2511004-amd64", 95 DindImage: "ibp-dind", 96 DindTag: "noimages-amd64", 97 CouchDBImage: "ibp-couchdb", 98 CouchDBTag: "2.3.1-2511004-amd64", 99 GRPCWebImage: "ibp-grpcweb", 100 GRPCWebTag: "2.5.1-2511004-amd64", 101 FluentdImage: "ibp-fluentd", 102 FluentdTag: "2.5.1-2511004-amd64", 103 EnrollerImage: "ibp-enroller", 104 EnrollerTag: "1.0.0-amd64", 105 }, 106 }, 107 "2.2.1-1": { 108 Default: true, 109 Version: "2.2.1-1", 110 Image: deployer.PeerImages{ 111 PeerInitImage: "ibp-init", 112 PeerInitTag: "2.5.1-2511004-amd64", 113 PeerImage: "ibp-peer", 114 PeerTag: "2.2.1-2511204-amd64", 115 DindImage: "ibp-dind", 116 DindTag: "noimages-amd64", 117 CouchDBImage: "ibp-couchdb", 118 CouchDBTag: "2.3.1-2511004-amd64", 119 GRPCWebImage: "ibp-grpcweb", 120 GRPCWebTag: "2.5.1-2511004-amd64", 121 FluentdImage: "ibp-fluentd", 122 FluentdTag: "2.5.1-2511004-amd64", 123 EnrollerImage: "ibp-enroller", 124 EnrollerTag: "1.0.0-amd64", 125 }, 126 }, 127 }, 128 Orderer: map[string]deployer.VersionOrderer{ 129 "1.4-9-0": { 130 Default: true, 131 Version: "1.4.9-0", 132 Image: deployer.OrdererImages{ 133 OrdererInitImage: "ibp-init", 134 OrdererInitTag: "2.5.1-2511004-amd64", 135 OrdererImage: "ibp-orderer", 136 OrdererTag: "1.4.9-2511004-amd64", 137 GRPCWebImage: "ibp-grpcweb", 138 GRPCWebTag: "2.5.1-2511004-amd64", 139 EnrollerImage: "ibp-enroller", 140 EnrollerTag: "1.0.0-amd64", 141 }, 142 }, 143 "2.2.1-0": { 144 Default: false, 145 Version: "2.2.1-0", 146 Image: deployer.OrdererImages{ 147 OrdererInitImage: "ibp-init", 148 OrdererInitTag: "2.5.1-2511004-amd64", 149 OrdererImage: "ibp-orderer", 150 OrdererTag: "2.2.1-2511004-amd64", 151 GRPCWebImage: "ibp-grpcweb", 152 GRPCWebTag: "2.5.1-2511004-amd64", 153 EnrollerImage: "ibp-enroller", 154 EnrollerTag: "1.0.0-amd64", 155 }, 156 }, 157 "2.2.1-1": { 158 Default: true, 159 Version: "2.2.1-0", 160 Image: deployer.OrdererImages{ 161 OrdererInitImage: "ibp-init", 162 OrdererInitTag: "2.5.1-2511004-amd64", 163 OrdererImage: "ibp-orderer", 164 OrdererTag: "2.2.1-2511204-amd64", 165 GRPCWebImage: "ibp-grpcweb", 166 GRPCWebTag: "2.5.1-2511004-amd64", 167 EnrollerImage: "ibp-enroller", 168 EnrollerTag: "1.0.0-amd64", 169 }, 170 }, 171 }, 172 }, 173 } 174 175 fv = &images.FabricVersion{ 176 Versions: operatorCfg.Versions, 177 } 178 }) 179 180 Context("ca", func() { 181 var ( 182 instance *current.IBPCA 183 ) 184 185 Context("normalize version", func() { 186 When("using non-hyphenated fabric version", func() { 187 BeforeEach(func() { 188 instance = ¤t.IBPCA{ 189 Spec: current.IBPCASpec{ 190 FabricVersion: "1.4.9", 191 }, 192 } 193 }) 194 195 It("returns default images for the base fabric version", func() { 196 version := fv.Normalize(instance) 197 Expect(version).To(Equal("1.4.9-1")) 198 }) 199 }) 200 }) 201 202 Context("validate version", func() { 203 BeforeEach(func() { 204 instance = ¤t.IBPCA{ 205 Spec: current.IBPCASpec{ 206 FabricVersion: "1.8.9-1", 207 }, 208 } 209 }) 210 211 It("returns error if unsupported version", func() { 212 err := fv.Validate(instance) 213 Expect(err).To(MatchError(ContainSubstring("is not supported for CA"))) 214 }) 215 }) 216 }) 217 218 Context("peer", func() { 219 var ( 220 instance *current.IBPPeer 221 ) 222 223 Context("normalize version", func() { 224 When("using non-hyphenated fabric version", func() { 225 BeforeEach(func() { 226 instance = ¤t.IBPPeer{ 227 Spec: current.IBPPeerSpec{ 228 FabricVersion: "2.2.1", 229 }, 230 } 231 }) 232 233 It("returns default images for the base fabric version", func() { 234 version := fv.Normalize(instance) 235 Expect(version).To(Equal("2.2.1-1")) 236 }) 237 }) 238 }) 239 240 Context("validate version", func() { 241 BeforeEach(func() { 242 instance = ¤t.IBPPeer{ 243 Spec: current.IBPPeerSpec{ 244 FabricVersion: "1.8.9-1", 245 }, 246 } 247 }) 248 249 It("returns error if unsupported version", func() { 250 err := fv.Validate(instance) 251 Expect(err).To(MatchError(ContainSubstring("is not supported for Peer"))) 252 }) 253 }) 254 }) 255 256 Context("orderer", func() { 257 var ( 258 instance *current.IBPOrderer 259 ) 260 261 Context("normalize version", func() { 262 When("using non-hyphenated fabric version", func() { 263 BeforeEach(func() { 264 instance = ¤t.IBPOrderer{ 265 Spec: current.IBPOrdererSpec{ 266 FabricVersion: "2.2.1", 267 }, 268 } 269 }) 270 271 It("returns default images for the base fabric version", func() { 272 version := fv.Normalize(instance) 273 Expect(version).To(Equal("2.2.1-1")) 274 }) 275 }) 276 }) 277 278 Context("validate version", func() { 279 BeforeEach(func() { 280 instance = ¤t.IBPOrderer{ 281 Spec: current.IBPOrdererSpec{ 282 FabricVersion: "1.8.9-1", 283 }, 284 } 285 }) 286 287 It("returns error if unsupported version", func() { 288 err := fv.Validate(instance) 289 Expect(err).To(MatchError(ContainSubstring("is not supported for Orderer"))) 290 }) 291 }) 292 }) 293 })