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