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 = &current.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: &current.NetworkInfo{
    65  						Domain: "test-domain",
    66  					},
    67  					Versions:         &current.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  })