github.com/IBM-Blockchain/fabric-operator@v1.0.4/pkg/initializer/common/common_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 common_test 20 21 import ( 22 "encoding/base64" 23 24 current "github.com/IBM-Blockchain/fabric-operator/api/v1beta1" 25 "github.com/IBM-Blockchain/fabric-operator/pkg/initializer/common" 26 "github.com/IBM-Blockchain/fabric-operator/pkg/initializer/common/mocks" 27 . "github.com/onsi/ginkgo/v2" 28 . "github.com/onsi/gomega" 29 "github.com/pkg/errors" 30 ) 31 32 var _ = Describe("Common", func() { 33 var ( 34 mockValidator *mocks.CryptoValidator 35 instance *current.IBPPeer 36 ) 37 38 BeforeEach(func() { 39 mockValidator = &mocks.CryptoValidator{} 40 41 instance = ¤t.IBPPeer{} 42 instance.Name = "instance1" 43 }) 44 45 Context("check crypto", func() { 46 It("returns true, if missing a ecert crypto", func() { 47 mockValidator.CheckEcertCryptoReturns(errors.New("not found")) 48 err := common.CheckCrypto(mockValidator, instance, false) 49 Expect(err).To(HaveOccurred()) 50 Expect(err.Error()).To(ContainSubstring("missing ecert crypto")) 51 }) 52 53 It("returns true, if missing a tls crypto", func() { 54 mockValidator.CheckTLSCryptoReturns(errors.New("not found")) 55 err := common.CheckCrypto(mockValidator, instance, false) 56 Expect(err).To(HaveOccurred()) 57 Expect(err.Error()).To(ContainSubstring("missing TLS crypto")) 58 }) 59 60 It("returns true, if missing a tls crypto", func() { 61 mockValidator.CheckClientAuthCryptoReturns(errors.New("not found")) 62 err := common.CheckCrypto(mockValidator, instance, true) 63 Expect(err).To(HaveOccurred()) 64 Expect(err.Error()).To(ContainSubstring("missing Client Auth crypto")) 65 }) 66 67 It("returns false, if all crypto found and is in proper format", func() { 68 err := common.CheckCrypto(mockValidator, instance, true) 69 Expect(err).NotTo(HaveOccurred()) 70 }) 71 }) 72 73 Context("check if certificates are different", func() { 74 var ( 75 currentCerts map[string][]byte 76 base64cert string 77 base64cert2 string 78 ) 79 80 BeforeEach(func() { 81 base64cert = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNvVENDQWtlZ0F3SUJBZ0lVTUwrYW4vS2QwRllaazhLTDRRMUQ2eHVJK08wd0NnWUlLb1pJemowRUF3SXcKV2pFTE1Ba0dBMVVFQmhNQ1ZWTXhGekFWQmdOVkJBZ1REazV2Y25Sb0lFTmhjbTlzYVc1aE1SUXdFZ1lEVlFRSwpFd3RJZVhCbGNteGxaR2RsY2pFUE1BMEdBMVVFQ3hNR1JtRmljbWxqTVFzd0NRWURWUVFERXdKallUQWVGdzB5Ck1EQTJNVGd5TVRRNU1EQmFGdzB5TVRBMk1UZ3lNVFUwTURCYU1HRXhDekFKQmdOVkJBWVRBbFZUTVJjd0ZRWUQKVlFRSUV3NU9iM0owYUNCRFlYSnZiR2x1WVRFVU1CSUdBMVVFQ2hNTFNIbHdaWEpzWldSblpYSXhEakFNQmdOVgpCQXNUQldGa2JXbHVNUk13RVFZRFZRUURFd3B3WldWeUxXRmtiV2x1TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJCnpqMERBUWNEUWdBRVRDOXVtbDExU240UVlDQklPWnlUdGxXVHhFTy90R1Q0cGFNMXVYcXF0dlhkMWVSR1RSMVcKL0x2M0Y3K1k3M1cxZ0VqeEp0UkZaY0oxN3pOZUVHc2lYYU9CNHpDQjREQU9CZ05WSFE4QkFmOEVCQU1DQjRBdwpEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRFRmdRVVNsbVJ4a2JJMzNteHNLaEVtY1R6eVZYeHNkOHdId1lEClZSMGpCQmd3Rm9BVStKWU5rWFgyb0VUREdVbHl2OEdHcDk3YUM4RXdJZ1lEVlIwUkJCc3dHWUlYVTJGaFpITXQKVFdGalFtOXZheTFRY204dWJHOWpZV3d3WEFZSUtnTUVCUVlIQ0FFRVVIc2lZWFIwY25NaU9uc2lhR1l1UVdabQphV3hwWVhScGIyNGlPaUlpTENKb1ppNUZibkp2Ykd4dFpXNTBTVVFpT2lKd1pXVnlMV0ZrYldsdUlpd2lhR1l1ClZIbHdaU0k2SW1Ga2JXbHVJbjE5TUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDZWRLazZPcVczR3JmdDZQWksKUHZwWUdla1c4NzdsUmgvOUtERHNWdlJKYlFJZ01aanRja2dBL2RTN0VjUXJ5VHl2cHB0TTdKWWJoZGRrZDdTcgp5TXl0b3c0PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" 82 base64cert2 = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNyRENDQWxPZ0F3SUJBZ0lVRUEwRGE1Ym5Eb1JzbWZLWGE4d0U5NkxNdTJBd0NnWUlLb1pJemowRUF3SXcKYURFTE1Ba0dBMVVFQmhNQ1ZWTXhGekFWQmdOVkJBZ1REazV2Y25Sb0lFTmhjbTlzYVc1aE1SUXdFZ1lEVlFRSwpFd3RJZVhCbGNteGxaR2RsY2pFUE1BMEdBMVVFQ3hNR1JtRmljbWxqTVJrd0Z3WURWUVFERXhCbVlXSnlhV010ClkyRXRjMlZ5ZG1WeU1CNFhEVEl3TURZeE9ESXdORGt3TUZvWERUSXhNRFl4T0RJd05UUXdNRm93WURFTE1Ba0cKQTFVRUJoTUNWVk14RnpBVkJnTlZCQWdURGs1dmNuUm9JRU5oY205c2FXNWhNUlF3RWdZRFZRUUtFd3RJZVhCbApjbXhsWkdkbGNqRU9NQXdHQTFVRUN4TUZZV1J0YVc0eEVqQVFCZ05WQkFNVENYQmxaWEpoWkcxcGJqQlpNQk1HCkJ5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCT0MwRG1vMm5MUUd4YzJRcnMyTlRUZ3hOdy9MTVluRWFheVQKQ0RKNldFVmlod2VPQ01WeTZ6MkVLVG81MHZsSm40aGd0VXhYR2xzb1AvN1YxZHdyMi9pamdlSXdnZDh3RGdZRApWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdIUVlEVlIwT0JCWUVGRWVlSEZTUjladmMyeUxZCkZ3T1pkV0Iva0ozdU1COEdBMVVkSXdRWU1CYUFGSWd0eTR2U0VUZllCeDBTS1BPdExQQmZ0YTVxTUNJR0ExVWQKRVFRYk1CbUNGMU5oWVdSekxVMWhZMEp2YjJzdFVISnZMbXh2WTJGc01Gc0dDQ29EQkFVR0J3Z0JCRTk3SW1GMApkSEp6SWpwN0ltaG1Ma0ZtWm1sc2FXRjBhVzl1SWpvaUlpd2lhR1l1Ulc1eWIyeHNiV1Z1ZEVsRUlqb2ljR1ZsCmNtRmtiV2x1SWl3aWFHWXVWSGx3WlNJNkltRmtiV2x1SW4xOU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lGTFoKNnBCMWpDaWZIejRVTlZqd0p3RjlKUWZ2UCsxbFpJN0JydjFYdi9nUkFpQk0yMVg4N1N1V2tWaEdGRUpPOElnMQptMU9SNkZKSzBMUEN4SkU3bnlMdTRRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" 83 84 certBytes, err := base64.StdEncoding.DecodeString(base64cert) 85 Expect(err).NotTo(HaveOccurred()) 86 87 cert2Bytes, err := base64.StdEncoding.DecodeString(base64cert2) 88 Expect(err).NotTo(HaveOccurred()) 89 90 currentCerts = map[string][]byte{ 91 "cert1.pem": certBytes, 92 "cert2.pem": cert2Bytes, 93 } 94 }) 95 96 It("returns false if list of certificates is equal", func() { 97 newCerts := []string{base64cert2, base64cert} 98 updated, err := common.CheckIfCertsDifferent(currentCerts, newCerts) 99 Expect(err).NotTo(HaveOccurred()) 100 Expect(updated).To(Equal(false)) 101 }) 102 103 It("returns true if list of certificates is not equal", func() { 104 base64cert = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNyRENDQWxPZ0F3SUJBZ0lVVlM0WXQ3aFRUYnZFVWk4S1R0QWpEU0pHUG5jd0NnWUlLb1pJemowRUF3SXcKYURFTE1Ba0dBMVVFQmhNQ1ZWTXhGekFWQmdOVkJBZ1REazV2Y25Sb0lFTmhjbTlzYVc1aE1SUXdFZ1lEVlFRSwpFd3RJZVhCbGNteGxaR2RsY2pFUE1BMEdBMVVFQ3hNR1JtRmljbWxqTVJrd0Z3WURWUVFERXhCbVlXSnlhV010ClkyRXRjMlZ5ZG1WeU1CNFhEVEl3TURZeE9ESXdOREV3TUZvWERUSXhNRFl4T0RJd05EWXdNRm93WURFTE1Ba0cKQTFVRUJoTUNWVk14RnpBVkJnTlZCQWdURGs1dmNuUm9JRU5oY205c2FXNWhNUlF3RWdZRFZRUUtFd3RJZVhCbApjbXhsWkdkbGNqRU9NQXdHQTFVRUN4TUZZV1J0YVc0eEVqQVFCZ05WQkFNVENYQmxaWEpoWkcxcGJqQlpNQk1HCkJ5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSHBSRjJKRkhLZnVxNUR0bHArZDJGak0rZytacWJCY0FGN3QKQVpTM2VBL2JzRTNIcllLUWRaelNGSzhNUStGQnF5cFYrdEpDaldWMktZRFRvTGJvTk5DamdlSXdnZDh3RGdZRApWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdIUVlEVlIwT0JCWUVGRWRRRHQwMDJSWGpwcXdnCmFjMTJuK3FlVHdTN01COEdBMVVkSXdRWU1CYUFGSWd0eTR2U0VUZllCeDBTS1BPdExQQmZ0YTVxTUNJR0ExVWQKRVFRYk1CbUNGMU5oWVdSekxVMWhZMEp2YjJzdFVISnZMbXh2WTJGc01Gc0dDQ29EQkFVR0J3Z0JCRTk3SW1GMApkSEp6SWpwN0ltaG1Ma0ZtWm1sc2FXRjBhVzl1SWpvaUlpd2lhR1l1Ulc1eWIyeHNiV1Z1ZEVsRUlqb2ljR1ZsCmNtRmtiV2x1SWl3aWFHWXVWSGx3WlNJNkltRmtiV2x1SW4xOU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lGZEQKODVFY2ErcTFralRmTGNLZlZhalVBb2I2OGtwUzUrM0ZraitsdUo1MUFpQTluZmRiZnMxYUpEV2VpUTdFOFdqLwpLOXgxRHUzY051Nno3Ym9leldlM1FRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" 105 106 newCerts := []string{base64cert2, base64cert} 107 updated, err := common.CheckIfCertsDifferent(currentCerts, newCerts) 108 Expect(err).NotTo(HaveOccurred()) 109 Expect(updated).To(Equal(true)) 110 }) 111 112 It("return true if list of certificates are different lengths", func() { 113 newCerts := []string{base64cert} 114 updated, err := common.CheckIfCertsDifferent(currentCerts, newCerts) 115 Expect(err).NotTo(HaveOccurred()) 116 Expect(updated).To(Equal(true)) 117 }) 118 119 It("returns false if list of updated certificates is empty", func() { 120 newCerts := []string{} 121 updated, err := common.CheckIfCertsDifferent(currentCerts, newCerts) 122 Expect(err).NotTo(HaveOccurred()) 123 Expect(updated).To(Equal(false)) 124 }) 125 }) 126 127 })