github.com/IBM-Blockchain/fabric-operator@v1.0.4/pkg/offering/openshift/console/console_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 openshiftconsole_test 20 21 import ( 22 . "github.com/onsi/ginkgo/v2" 23 . "github.com/onsi/gomega" 24 25 current "github.com/IBM-Blockchain/fabric-operator/api/v1beta1" 26 "github.com/IBM-Blockchain/fabric-operator/controllers/mocks" 27 config "github.com/IBM-Blockchain/fabric-operator/operatorconfig" 28 managermocks "github.com/IBM-Blockchain/fabric-operator/pkg/manager/resources/mocks" 29 baseconsole "github.com/IBM-Blockchain/fabric-operator/pkg/offering/base/console" 30 baseconsolemocks "github.com/IBM-Blockchain/fabric-operator/pkg/offering/base/console/mocks" 31 openshiftconsole "github.com/IBM-Blockchain/fabric-operator/pkg/offering/openshift/console" 32 "github.com/IBM-Blockchain/fabric-operator/version" 33 "github.com/pkg/errors" 34 "k8s.io/apimachinery/pkg/runtime" 35 ) 36 37 var _ = Describe("Openshift Console", func() { 38 39 var ( 40 console *openshiftconsole.Console 41 instance *current.IBPConsole 42 mockKubeClient *mocks.Client 43 44 consoleRouteManager *managermocks.ResourceManager 45 proxyRouteManager *managermocks.ResourceManager 46 deploymentMgr *managermocks.ResourceManager 47 update *baseconsolemocks.Update 48 ) 49 50 Context("Reconciles", func() { 51 BeforeEach(func() { 52 mockKubeClient = &mocks.Client{} 53 update = &baseconsolemocks.Update{} 54 instance = ¤t.IBPConsole{ 55 Spec: current.IBPConsoleSpec{ 56 License: current.License{ 57 Accept: true, 58 }, 59 Email: "xyz@ibm.com", 60 PasswordSecretName: "secret", 61 ImagePullSecrets: []string{"testsecret"}, 62 RegistryURL: "ghcr.io/ibm-blockchain/", 63 ServiceAccountName: "test", 64 NetworkInfo: ¤t.NetworkInfo{ 65 Domain: "test-domain", 66 }, 67 Versions: ¤t.Versions{}, 68 ConnectionString: "http://fake.url", 69 }, 70 } 71 instance.Kind = "IBPConsole" 72 instance.Name = "route1" 73 instance.Namespace = "testNS" 74 instance.Status.Version = version.Operator 75 76 deploymentMgr = &managermocks.ResourceManager{} 77 serviceMgr := &managermocks.ResourceManager{} 78 pvcMgr := &managermocks.ResourceManager{} 79 configMapMgr := &managermocks.ResourceManager{} 80 consoleConfigMapMgr := &managermocks.ResourceManager{} 81 deployerConfigMapMgr := &managermocks.ResourceManager{} 82 roleMgr := &managermocks.ResourceManager{} 83 roleBindingMgr := &managermocks.ResourceManager{} 84 serviceAccountMgr := &managermocks.ResourceManager{} 85 86 consoleRouteManager = &managermocks.ResourceManager{} 87 proxyRouteManager = &managermocks.ResourceManager{} 88 89 deploymentMgr.ExistsReturns(true) 90 console = &openshiftconsole.Console{ 91 Console: &baseconsole.Console{ 92 Client: mockKubeClient, 93 Scheme: &runtime.Scheme{}, 94 Config: &config.Config{}, 95 96 DeploymentManager: deploymentMgr, 97 ServiceManager: serviceMgr, 98 PVCManager: pvcMgr, 99 ConfigMapManager: configMapMgr, 100 ConsoleConfigMapManager: consoleConfigMapMgr, 101 DeployerConfigMapManager: deployerConfigMapMgr, 102 RoleManager: roleMgr, 103 RoleBindingManager: roleBindingMgr, 104 ServiceAccountManager: serviceAccountMgr, 105 Restart: &baseconsolemocks.RestartManager{}, 106 }, 107 RouteManager: consoleRouteManager, 108 ProxyRouteManager: proxyRouteManager, 109 } 110 }) 111 112 It("returns an error if console route manager fails to reconcile", func() { 113 consoleRouteManager.ReconcileReturns(errors.New("failed to reconcile ca route")) 114 _, err := console.Reconcile(instance, update) 115 Expect(err).To(HaveOccurred()) 116 Expect(err.Error()).To(Equal("failed to reconcile managers: failed Console Route reconciliation: failed to reconcile ca route")) 117 }) 118 119 It("returns an error if proxy route manager fails to reconcile", func() { 120 proxyRouteManager.ReconcileReturns(errors.New("failed to reconcile operations route")) 121 _, err := console.Reconcile(instance, update) 122 Expect(err).To(HaveOccurred()) 123 Expect(err.Error()).To(Equal("failed to reconcile managers: failed Proxy Route reconciliation: failed to reconcile operations route")) 124 }) 125 126 It("restarts pods by deleting deployment", func() { 127 update.RestartNeededReturns(true) 128 _, err := console.Reconcile(instance, update) 129 Expect(err).NotTo(HaveOccurred()) 130 Expect(mockKubeClient.PatchCallCount()).To(Equal(1)) 131 }) 132 133 It("reconciles IBPConsole", func() { 134 _, err := console.Reconcile(instance, update) 135 Expect(err).NotTo(HaveOccurred()) 136 }) 137 }) 138 })