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 = &current.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 = &current.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 = &current.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 = &current.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 = &current.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 = &current.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  })