github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/multicluster/verify-api/verify_api_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  
     4  package api_test
     5  
     6  import (
     7  	"encoding/json"
     8  	"fmt"
     9  	"net/http"
    10  	"os"
    11  	"time"
    12  
    13  	"github.com/verrazzano/verrazzano/tests/e2e/pkg/test/framework"
    14  
    15  	. "github.com/onsi/ginkgo/v2"
    16  	. "github.com/onsi/gomega"
    17  	"github.com/verrazzano/verrazzano/pkg/k8sutil"
    18  	"github.com/verrazzano/verrazzano/platform-operator/apis/verrazzano/v1alpha1"
    19  	"github.com/verrazzano/verrazzano/tests/e2e/pkg"
    20  )
    21  
    22  const (
    23  	waitTimeout     = 3 * time.Minute
    24  	pollingInterval = 10 * time.Second
    25  )
    26  
    27  var managedClusterName = os.Getenv("MANAGED_CLUSTER_NAME")
    28  var adminKubeconfig = os.Getenv("ADMIN_KUBECONFIG")
    29  
    30  var t = framework.NewTestFramework("api_test")
    31  
    32  var afterSuite = t.AfterSuiteFunc(func() {})
    33  var _ = AfterSuite(afterSuite)
    34  var beforeSuite = t.BeforeSuiteFunc(func() {})
    35  var _ = BeforeSuite(beforeSuite)
    36  var _ = t.AfterEach(func() {})
    37  
    38  var _ = t.Describe("Multi Cluster Verify API", Label("f:ui.api"), func() {
    39  	t.Context("Admin Cluster", func() {
    40  		t.BeforeEach(func() {
    41  			os.Setenv(k8sutil.EnvVarTestKubeConfig, os.Getenv("ADMIN_KUBECONFIG"))
    42  		})
    43  
    44  		t.It("Get and Validate Verrazzano resource for admin cluster", func() {
    45  			api := pkg.EventuallyGetAPIEndpoint(adminKubeconfig)
    46  			Eventually(func() bool {
    47  				response, err := api.Get("apis/install.verrazzano.io/v1beta1/verrazzanos")
    48  				return isValidVerrazzanosResponse(response, err)
    49  			}, waitTimeout, pollingInterval).Should(BeTrue())
    50  		})
    51  
    52  		t.It("Get and Validate Verrazzano resource for managed cluster", func() {
    53  			api := pkg.EventuallyGetAPIEndpoint(adminKubeconfig)
    54  			Eventually(func() bool {
    55  				response, err := api.Get("apis/install.verrazzano.io/v1beta1/verrazzanos?cluster=" + managedClusterName)
    56  				return isValidVerrazzanosResponse(response, err)
    57  			}, waitTimeout, pollingInterval).Should(BeTrue())
    58  		})
    59  	})
    60  })
    61  
    62  func isValidVerrazzanosResponse(response *pkg.HTTPResponse, err error) bool {
    63  	if err != nil {
    64  		pkg.Log(pkg.Error, fmt.Sprintf("Error fetching verrazzanos from api, error: %v", err))
    65  		return false
    66  	}
    67  	if response.StatusCode != http.StatusOK {
    68  		pkg.Log(pkg.Error, fmt.Sprintf("Error fetching verrazzanos from api, response: %v", response))
    69  		return false
    70  	}
    71  
    72  	verrazzanos := v1alpha1.VerrazzanoList{}
    73  	err = json.Unmarshal(response.Body, &verrazzanos)
    74  	if err != nil {
    75  		pkg.Log(pkg.Error, fmt.Sprintf("Unable to unmarshal api response, error: %v", err))
    76  		return false
    77  	}
    78  
    79  	if len(verrazzanos.Items) != 1 {
    80  		pkg.Log(pkg.Error, fmt.Sprintf("Expected to find 1 verrazzanos but found: %d", len(verrazzanos.Items)))
    81  		return false
    82  	}
    83  
    84  	return true
    85  }