From 5fc69134e33e6cce787597aa3fa58b94c007838e Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Wed, 6 Mar 2019 15:34:51 +0200 Subject: [PATCH] Add CORS policy test --- pkg/router/istio_test.go | 34 +++++++++++++++++++++++++++++++++- pkg/router/router_test.go | 6 ++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/pkg/router/istio_test.go b/pkg/router/istio_test.go index 807f80f1..5bd83927 100644 --- a/pkg/router/istio_test.go +++ b/pkg/router/istio_test.go @@ -192,7 +192,6 @@ func TestIstioRouter_HTTPRequestHeaders(t *testing.T) { t.Fatal(err.Error()) } - // test insert vs, err := mocks.istioClient.NetworkingV1alpha3().VirtualServices("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) @@ -207,3 +206,36 @@ func TestIstioRouter_HTTPRequestHeaders(t *testing.T) { t.Errorf("Got timeout %v wanted %v", timeout, "15000") } } + +func TestIstioRouter_CORS(t *testing.T) { + mocks := setupfakeClients() + router := &IstioRouter{ + logger: mocks.logger, + flaggerClient: mocks.flaggerClient, + istioClient: mocks.istioClient, + kubeClient: mocks.kubeClient, + } + + err := router.Sync(mocks.canary) + if err != nil { + t.Fatal(err.Error()) + } + + vs, err := mocks.istioClient.NetworkingV1alpha3().VirtualServices("default").Get("podinfo", metav1.GetOptions{}) + if err != nil { + t.Fatal(err.Error()) + } + + if len(vs.Spec.Http) != 1 { + t.Fatalf("Got HTTPRoute %v wanted %v", len(vs.Spec.Http), 1) + } + + if vs.Spec.Http[0].CorsPolicy == nil { + t.Fatal("Got not CORS policy") + } + + methods := vs.Spec.Http[0].CorsPolicy.AllowMethods + if len(methods) != 2 { + t.Fatalf("Got CORS allow methods %v wanted %v", len(methods), 2) + } +} diff --git a/pkg/router/router_test.go b/pkg/router/router_test.go index 5d12aa25..e3bc1460 100644 --- a/pkg/router/router_test.go +++ b/pkg/router/router_test.go @@ -65,6 +65,12 @@ func newMockCanary() *v1alpha3.Canary { }, }, }, + CorsPolicy: &istiov1alpha3.CorsPolicy{ + AllowMethods: []string{ + "GET", + "POST", + }, + }, }, CanaryAnalysis: v1alpha3.CanaryAnalysis{ Threshold: 10, StepWeight: 10,