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 }