github.com/IBM-Blockchain/fabric-operator@v1.0.4/pkg/initializer/orderer/config/v2/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 v2_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 v2 "github.com/IBM-Blockchain/fabric-operator/pkg/apis/orderer/v2" 28 config "github.com/IBM-Blockchain/fabric-operator/pkg/initializer/orderer/config/v2" 29 ) 30 31 var _ = Describe("V24 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: v2.Orderer{ 57 General: v2.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: v2.Orderer{ 98 General: v2.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 })