github.com/IBM-Blockchain/fabric-operator@v1.0.4/pkg/initializer/orderer/config/v24/config_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 v24_test
    20  
    21  import (
    22  	. "github.com/onsi/ginkgo/v2"
    23  	. "github.com/onsi/gomega"
    24  
    25  	commonapi "github.com/IBM-Blockchain/fabric-operator/pkg/apis/common"
    26  	v1 "github.com/IBM-Blockchain/fabric-operator/pkg/apis/orderer/v1"
    27  	v24 "github.com/IBM-Blockchain/fabric-operator/pkg/apis/orderer/v24"
    28  	config "github.com/IBM-Blockchain/fabric-operator/pkg/initializer/orderer/config/v24"
    29  )
    30  
    31  var _ = Describe("V2 Orderer Configuration", func() {
    32  	Context("reading and writing orderer configuration file", func() {
    33  		BeforeEach(func() {
    34  			config := &config.Orderer{}
    35  
    36  			err := config.WriteToFile("/tmp/orderer.yaml")
    37  			Expect(err).NotTo(HaveOccurred())
    38  		})
    39  
    40  		It("creates orderer.yaml", func() {
    41  			Expect("/tmp/orderer.yaml").Should(BeAnExistingFile())
    42  		})
    43  
    44  		It("read orderer.yaml", func() {
    45  			_, err := config.ReadOrdererFile("/tmp/orderer.yaml")
    46  			Expect(err).NotTo(HaveOccurred())
    47  		})
    48  	})
    49  
    50  	Context("merges current configuration with overrides values", func() {
    51  		It("merges with defaults based on HSM proxy", func() {
    52  			orderer, err := config.ReadOrdererFile("../../../../../testdata/init/orderer/orderer.yaml")
    53  			Expect(err).NotTo(HaveOccurred())
    54  
    55  			newConfig := &config.Orderer{
    56  				Orderer: v24.Orderer{
    57  					General: v24.General{
    58  						BCCSP: &commonapi.BCCSP{
    59  							ProviderName: "PKCS11",
    60  							PKCS11: &commonapi.PKCS11Opts{
    61  								Library:    "library2",
    62  								Label:      "label2",
    63  								Pin:        "2222",
    64  								HashFamily: "SHA3",
    65  								SecLevel:   512,
    66  								FileKeyStore: &commonapi.FileKeyStoreOpts{
    67  									KeyStorePath: "keystore3",
    68  								},
    69  							},
    70  						},
    71  					},
    72  				},
    73  			}
    74  
    75  			err = orderer.MergeWith(newConfig, true)
    76  			Expect(err).NotTo(HaveOccurred())
    77  			Expect(orderer.General.BCCSP.PKCS11.Library).To(Equal("/usr/local/lib/libpkcs11-proxy.so"))
    78  			Expect(orderer.General.BCCSP.PKCS11.Label).To(Equal("label2"))
    79  			Expect(orderer.General.BCCSP.PKCS11.Pin).To(Equal("2222"))
    80  			Expect(orderer.General.BCCSP.PKCS11.HashFamily).To(Equal("SHA3"))
    81  			Expect(orderer.General.BCCSP.PKCS11.SecLevel).To(Equal(512))
    82  			Expect(orderer.General.BCCSP.PKCS11.FileKeyStore.KeyStorePath).To(Equal("keystore3"))
    83  		})
    84  
    85  		It("correctly merges boolean fields", func() {
    86  			orderer, err := config.ReadOrdererFile("../../../../../testdata/init/orderer/orderer.yaml")
    87  			Expect(err).NotTo(HaveOccurred())
    88  
    89  			trueVal := true
    90  			orderer.General.Authentication.NoExpirationChecks = &trueVal
    91  			orderer.General.Profile.Enabled = &trueVal
    92  			Expect(*orderer.General.Authentication.NoExpirationChecks).To(Equal(true))
    93  			Expect(*orderer.General.Profile.Enabled).To(Equal(true))
    94  
    95  			falseVal := false
    96  			newConfig := &config.Orderer{
    97  				Orderer: v24.Orderer{
    98  					General: v24.General{
    99  						Authentication: v1.Authentication{
   100  							NoExpirationChecks: &falseVal,
   101  						},
   102  					},
   103  				},
   104  			}
   105  
   106  			err = orderer.MergeWith(newConfig, false)
   107  			Expect(err).NotTo(HaveOccurred())
   108  
   109  			By("setting field from 'true' to 'false' if bool pointer set to 'false' in override config", func() {
   110  				Expect(*orderer.General.Authentication.NoExpirationChecks).To(Equal(false))
   111  			})
   112  
   113  			By("persisting boolean fields set to 'true' when bool pointer not set to 'false' in override config", func() {
   114  				Expect(*orderer.General.Profile.Enabled).To(Equal(true))
   115  			})
   116  
   117  		})
   118  	})
   119  
   120  	It("reads in orderer.yaml and unmarshal it to peer config", func() {
   121  		orderer, err := config.ReadOrdererFile("../../../../../testdata/init/orderer/orderer.yaml")
   122  		Expect(err).NotTo(HaveOccurred())
   123  
   124  		// General
   125  		general := orderer.General
   126  		By("setting General.ListenAddress", func() {
   127  			Expect(general.ListenAddress).To(Equal("127.0.0.1"))
   128  		})
   129  
   130  		By("setting General.ListenPort", func() {
   131  			Expect(general.ListenPort).To(Equal(uint16(7050)))
   132  		})
   133  
   134  		By("setting General.TLS.Enabled", func() {
   135  			Expect(*general.TLS.Enabled).To(Equal(true))
   136  		})
   137  
   138  		By("setting General.TLS.PrivateKey", func() {
   139  			Expect(general.TLS.PrivateKey).To(Equal("tls/server.key"))
   140  		})
   141  
   142  		By("setting General.TLS.Certificate", func() {
   143  			Expect(general.TLS.Certificate).To(Equal("tls/server.crt"))
   144  		})
   145  
   146  		By("setting General.TLS.RootCAs", func() {
   147  			Expect(general.TLS.RootCAs).To(Equal([]string{"tls/ca.crt"}))
   148  		})
   149  
   150  		By("setting General.TLS.ClientAuthRequired", func() {
   151  			Expect(*general.TLS.ClientAuthRequired).To(Equal(true))
   152  		})
   153  
   154  		By("setting General.TLS.ClientRootCAs", func() {
   155  			Expect(general.TLS.ClientRootCAs).To(Equal([]string{"tls/client.crt"}))
   156  		})
   157  
   158  		By("setting General.BCCSP.ProviderName", func() {
   159  			Expect(general.BCCSP.ProviderName).To(Equal("SW"))
   160  		})
   161  
   162  		By("setting General.BCCSP.SW.HashFamily", func() {
   163  			Expect(general.BCCSP.SW.HashFamily).To(Equal("SHA2"))
   164  		})
   165  
   166  		By("setting General.BCCSP.SW.SecLevel", func() {
   167  			Expect(general.BCCSP.SW.SecLevel).To(Equal(256))
   168  		})
   169  
   170  		By("setting General.BCCSP.SW.FileKeyStore.KeyStore", func() {
   171  			Expect(general.BCCSP.SW.FileKeyStore.KeyStorePath).To(Equal("msp/keystore"))
   172  		})
   173  
   174  		By("setting BCCSP.PKCS11.Library", func() {
   175  			Expect(general.BCCSP.PKCS11.Library).To(Equal("library1"))
   176  		})
   177  
   178  		By("setting BCCSP.PKCS11.Label", func() {
   179  			Expect(general.BCCSP.PKCS11.Label).To(Equal("label1"))
   180  		})
   181  
   182  		By("setting BCCSP.PKCS11.Pin", func() {
   183  			Expect(general.BCCSP.PKCS11.Pin).To(Equal("1234"))
   184  		})
   185  
   186  		By("setting BCCSP.PKCS11.HashFamily", func() {
   187  			Expect(general.BCCSP.PKCS11.HashFamily).To(Equal("SHA2"))
   188  		})
   189  
   190  		By("setting BCCSP.PKCS11.Security", func() {
   191  			Expect(general.BCCSP.PKCS11.SecLevel).To(Equal(256))
   192  		})
   193  
   194  		By("setting BCCSP.PKCS11.FileKeystore.KeystorePath", func() {
   195  			Expect(general.BCCSP.PKCS11.FileKeyStore.KeyStorePath).To(Equal("keystore2"))
   196  		})
   197  	})
   198  })