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