github.com/verrazzano/verrazzano@v1.7.1/pkg/k8sutil/platform_operator_utils_test.go (about)

     1  // Copyright (c) 2021, 2023, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  package k8sutil_test
     4  
     5  import (
     6  	"fmt"
     7  	"os"
     8  	"os/exec"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  	"github.com/verrazzano/verrazzano/pkg/k8sutil"
    13  )
    14  
    15  // genericTestRunner is used to run generic OS commands with expected results
    16  type genericTestRunner struct {
    17  	stdOut []byte
    18  	stdErr []byte
    19  	err    error
    20  }
    21  
    22  // Run genericTestRunner executor
    23  func (r genericTestRunner) Run(cmd *exec.Cmd) (stdout []byte, stderr []byte, err error) {
    24  	return r.stdOut, r.stdErr, r.err
    25  }
    26  
    27  // TestGetInstalledBOMData tests executing into the Platform Operator pod and returns the installed BOM file data as JSON
    28  // GIVEN a kubeconfig
    29  //
    30  //	WHEN GetInstalledBOMData is called
    31  //	THEN GetInstalledBOMData return nil error
    32  func TestGetInstalledBOMData(t *testing.T) {
    33  	asserts := assert.New(t)
    34  	// Preserve previous env var value
    35  	prevEnvVarKubeConfig := os.Getenv(k8sutil.EnvVarKubeConfig)
    36  	// Unset KUBECONFIG environment variable
    37  	wd, err := os.Getwd()
    38  	asserts.NoError(err)
    39  	err = os.Setenv(k8sutil.EnvVarKubeConfig, fmt.Sprintf("%s/%s", wd, dummyKubeConfig))
    40  	stdout := []byte("verrazzano-platform-operator")
    41  	stdErr := []byte{}
    42  
    43  	k8sutil.SetCmdRunner(genericTestRunner{
    44  		stdOut: stdout,
    45  		stdErr: stdErr,
    46  		err:    nil,
    47  	})
    48  	defer k8sutil.SetDefaultRunner()
    49  	_, err = k8sutil.GetInstalledBOMData(dummyKubeConfig)
    50  	assert.Nil(t, err)
    51  	// Reset env variables
    52  	err = os.Setenv(k8sutil.EnvVarKubeConfig, prevEnvVarKubeConfig)
    53  	asserts.NoError(err)
    54  }
    55  
    56  // TestGetInstalledBOMData tests executing into the Platform Operator pod and returns the installed BOM file data as JSON
    57  // GIVEN a kubeconfig
    58  //
    59  //	WHEN GetInstalledBOMData is called
    60  //	THEN GetInstalledBOMData returns error
    61  func TestGetInstalledBOMDataFailure(t *testing.T) {
    62  	asserts := assert.New(t)
    63  	// Preserve previous env var value
    64  	prevEnvVarKubeConfig := os.Getenv(k8sutil.EnvVarKubeConfig)
    65  	// Unset KUBECONFIG environment variable
    66  	wd, err := os.Getwd()
    67  	asserts.NoError(err)
    68  	err = os.Setenv(k8sutil.EnvVarKubeConfig, fmt.Sprintf("%s/%s", wd, dummyKubeConfig))
    69  	stdout := []byte("verrazzano-platform-operator")
    70  	stdErr := []byte{}
    71  
    72  	k8sutil.SetCmdRunner(genericTestRunner{
    73  		stdOut: stdout,
    74  		stdErr: stdErr,
    75  		err:    fmt.Errorf("Error running command"),
    76  	})
    77  	defer k8sutil.SetDefaultRunner()
    78  	_, err = k8sutil.GetInstalledBOMData(dummyKubeConfig)
    79  	assert.NotNil(t, err)
    80  	// Reset env variables
    81  	err = os.Setenv(k8sutil.EnvVarKubeConfig, prevEnvVarKubeConfig)
    82  	asserts.NoError(err)
    83  }