github.com/kiali/kiali@v1.84.0/business/references/service_entry_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 security_v1beta "istio.io/client-go/pkg/apis/security/v1beta1" 9 10 "github.com/kiali/kiali/config" 11 "github.com/kiali/kiali/models" 12 "github.com/kiali/kiali/tests/data" 13 ) 14 15 func prepareTestForServiceEntry(ap *security_v1beta.AuthorizationPolicy, dr *networking_v1beta1.DestinationRule, se *networking_v1beta1.ServiceEntry, sc *networking_v1beta1.Sidecar) models.IstioReferences { 16 drReferences := ServiceEntryReferences{ 17 Namespace: "bookinfo", 18 Namespaces: models.Namespaces{ 19 {Name: "bookinfo"}, 20 {Name: "bookinfo2"}, 21 {Name: "bookinfo3"}, 22 }, 23 AuthorizationPolicies: []*security_v1beta.AuthorizationPolicy{ap}, 24 ServiceEntries: []*networking_v1beta1.ServiceEntry{se}, 25 Sidecars: []*networking_v1beta1.Sidecar{sc}, 26 DestinationRules: []*networking_v1beta1.DestinationRule{dr}, 27 RegistryServices: append(data.CreateFakeRegistryServices("foo-dev.bookinfo.svc.cluster.local", "bookinfo", "."), data.CreateFakeRegistryServices("foo-dev.istio-system.svc.cluster.local", "istio-system", "*")...), 28 } 29 return *drReferences.References()[models.IstioReferenceKey{ObjectType: "serviceentry", Namespace: se.Namespace, Name: se.Name}] 30 } 31 32 func TestServiceEntryReferences(t *testing.T) { 33 assert := assert.New(t) 34 conf := config.NewConfig() 35 config.Set(conf) 36 37 // Setup mocks 38 references := prepareTestForServiceEntry(getAuthPolicy(t), getAPDestinationRule(t), getAPServiceEntry(t), getSidecar(t)) 39 40 // Check Workload references empty 41 assert.Empty(references.WorkloadReferences) 42 43 // Check Service references 44 assert.Len(references.ServiceReferences, 1) 45 assert.Equal(references.ServiceReferences[0].Name, "foo-dev.istio-system.svc.cluster.local") 46 assert.Equal(references.ServiceReferences[0].Namespace, "istio-system") 47 48 // Check DR and AuthPolicy references 49 assert.Len(references.ObjectReferences, 3) 50 assert.Equal(references.ObjectReferences[0].Name, "foo-dev") 51 assert.Equal(references.ObjectReferences[0].Namespace, "istio-system") 52 assert.Equal(references.ObjectReferences[0].ObjectType, "destinationrule") 53 54 assert.Equal(references.ObjectReferences[1].Name, "foo-sidecar") 55 assert.Equal(references.ObjectReferences[1].Namespace, "istio-system") 56 assert.Equal(references.ObjectReferences[1].ObjectType, "sidecar") 57 58 assert.Equal(references.ObjectReferences[2].Name, "allow-foo") 59 assert.Equal(references.ObjectReferences[2].Namespace, "istio-system") 60 assert.Equal(references.ObjectReferences[2].ObjectType, "authorizationpolicy") 61 } 62 63 func TestServiceEntryNoReferences(t *testing.T) { 64 assert := assert.New(t) 65 conf := config.NewConfig() 66 config.Set(conf) 67 68 // Setup mocks 69 references := prepareTestForServiceEntry(getAuthPolicy(t), getAPDestinationRule(t), fakeServiceEntry(), getSidecar(t)) 70 assert.Empty(references.ServiceReferences) 71 assert.Empty(references.WorkloadReferences) 72 assert.Empty(references.ObjectReferences) 73 } 74 75 func getAPDestinationRule(t *testing.T) *networking_v1beta1.DestinationRule { 76 loader := yamlFixtureLoader("auth-policy.yaml") 77 err := loader.Load() 78 if err != nil { 79 t.Error("Error loading test data.") 80 } 81 82 return loader.FindDestinationRule("foo-dev", "istio-system") 83 }