github.com/kiali/kiali@v1.84.0/business/references/gateway_references_test.go (about)

     1  package references
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	networking_v1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1"
     8  
     9  	"github.com/kiali/kiali/config"
    10  	"github.com/kiali/kiali/models"
    11  	"github.com/kiali/kiali/tests/data"
    12  )
    13  
    14  func prepareTestForGateway(gw *networking_v1beta1.Gateway, vss []*networking_v1beta1.VirtualService) models.IstioReferences {
    15  	gwReferences := GatewayReferences{
    16  		Gateways:        []*networking_v1beta1.Gateway{gw},
    17  		VirtualServices: vss,
    18  		WorkloadsPerNamespace: map[string]models.WorkloadList{
    19  			"test": data.CreateWorkloadList("istio-system",
    20  				data.CreateWorkloadListItem("istio-ingressgateway", map[string]string{"istio": "ingressgateway"})),
    21  		},
    22  	}
    23  	return *gwReferences.References()[models.IstioReferenceKey{ObjectType: "gateway", Namespace: gw.Namespace, Name: gw.Name}]
    24  }
    25  
    26  func TestGatewayReferences(t *testing.T) {
    27  	assert := assert.New(t)
    28  	conf := config.NewConfig()
    29  	config.Set(conf)
    30  
    31  	// Setup mocks
    32  	references := prepareTestForGateway(fakeGateway(t), fakeVirtualServices(t))
    33  
    34  	// Check Workload references
    35  	assert.Len(references.WorkloadReferences, 1)
    36  	assert.Equal(references.WorkloadReferences[0].Name, "istio-ingressgateway")
    37  	assert.Equal(references.WorkloadReferences[0].Namespace, "istio-system")
    38  
    39  	// Check VS references
    40  	assert.Len(references.ObjectReferences, 3)
    41  	assert.Equal(references.ObjectReferences[0].Name, "reviews1")
    42  	assert.Equal(references.ObjectReferences[0].Namespace, "bookinfo")
    43  	assert.Equal(references.ObjectReferences[0].ObjectType, "virtualservice")
    44  	assert.Equal(references.ObjectReferences[1].Name, "reviews2")
    45  	assert.Equal(references.ObjectReferences[1].Namespace, "bookinfo")
    46  	assert.Equal(references.ObjectReferences[1].ObjectType, "virtualservice")
    47  	assert.Equal(references.ObjectReferences[2].Name, "reviews3")
    48  	assert.Equal(references.ObjectReferences[2].Namespace, "bookinfo")
    49  	assert.Equal(references.ObjectReferences[2].ObjectType, "virtualservice")
    50  }
    51  
    52  func TestGatewayNoWorkloadReferences(t *testing.T) {
    53  	assert := assert.New(t)
    54  	conf := config.NewConfig()
    55  	config.Set(conf)
    56  
    57  	// Setup mocks
    58  	references := prepareTestForGateway(data.CreateEmptyGateway("reviews-empty", "bookinfo", map[string]string{"wrong": "selector"}), fakeVirtualServices(t))
    59  	assert.Empty(references.WorkloadReferences)
    60  }
    61  
    62  func fakeGateway(t *testing.T) *networking_v1beta1.Gateway {
    63  	gwObject := data.CreateEmptyGateway("gateway", "istio-system", map[string]string{
    64  		"istio": "ingressgateway",
    65  	})
    66  
    67  	return gwObject
    68  }
    69  
    70  func fakeVirtualServices(t *testing.T) []*networking_v1beta1.VirtualService {
    71  	loader := yamlFixtureLoader("multiple-vs-gateways.yaml")
    72  	err := loader.Load()
    73  	if err != nil {
    74  		t.Error("Error loading test data.")
    75  	}
    76  
    77  	return loader.FindVirtualServiceIn("bookinfo")
    78  }