From 0e1140e60c0b1cccfa6ad76acd8f71719c4227dc Mon Sep 17 00:00:00 2001 From: Denis Makogon Date: Fri, 22 Sep 2017 00:36:28 +0300 Subject: [PATCH 1/3] Fix route headers merge Closes: #346 --- api/models/route.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/models/route.go b/api/models/route.go index eb642e581..b98a21294 100644 --- a/api/models/route.go +++ b/api/models/route.go @@ -151,7 +151,7 @@ func (r *Route) Update(new *Route) { r.Headers.Del(k) } else { for _, val := range v { - r.Headers.Add(k, val) + r.Headers.Set(k, val) } } } From c39bf314252320c14040a1ddb91f67827fee3d26 Mon Sep 17 00:00:00 2001 From: Denis Makogon Date: Fri, 22 Sep 2017 01:05:56 +0300 Subject: [PATCH 2/3] Adding API test to valide change --- test/fn-api-tests/routes_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test/fn-api-tests/routes_test.go b/test/fn-api-tests/routes_test.go index 5b10f9a9e..70c77c319 100644 --- a/test/fn-api-tests/routes_test.go +++ b/test/fn-api-tests/routes_test.go @@ -6,6 +6,7 @@ import ( "github.com/fnproject/fn/api/id" "github.com/fnproject/fn_go/models" + "reflect" ) func TestRoutes(t *testing.T) { @@ -192,4 +193,19 @@ func TestRoutes(t *testing.T) { DeleteApp(t, s.Context, s.Client, s.AppName) }) + + t.Run("multiple-deploy-route-with-headers", func(T *testing.T) { + s := SetupDefaultSuite() + CreateApp(t, s.Context, s.Client, s.AppName, map[string]string{}) + routeHeaders := map[string][]string{} + routeHeaders["A"] = []string{"a"} + routeHeaders["B"] = []string{"b"} + DeployRoute(t, s.Context, s.Client, s.AppName, s.RoutePath, s.Image, s.RouteType, s.Format, s.RouteConfig, routeHeaders) + sameRoute := DeployRoute(t, s.Context, s.Client, s.AppName, s.RoutePath, s.Image, s.RouteType, s.Format, s.RouteConfig, routeHeaders) + if ok := reflect.DeepEqual(sameRoute.Headers, routeHeaders); !ok { + t.Error("Route headers should remain the same after multiple deploys with exact the same parameters") + } + DeleteApp(t, s.Context, s.Client, s.AppName) + }) + } From edd0c8453cafc03208770201d5636b5e9d2b57cb Mon Sep 17 00:00:00 2001 From: Denis Makogon Date: Fri, 22 Sep 2017 01:23:14 +0300 Subject: [PATCH 3/3] Fixing tests --- api/datastore/internal/datastoretest/test.go | 2 +- api/models/route.go | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/api/datastore/internal/datastoretest/test.go b/api/datastore/internal/datastoretest/test.go index 144f50779..12780d284 100644 --- a/api/datastore/internal/datastoretest/test.go +++ b/api/datastore/internal/datastoretest/test.go @@ -363,7 +363,7 @@ func Test(t *testing.T, ds models.Datastore) { "THIRD": "3", }, Headers: http.Header{ - "First": []string{"test", "test2"}, + "First": []string{"test2"}, "Third": []string{"test", "test2"}, }, } diff --git a/api/models/route.go b/api/models/route.go index b98a21294..16262e7e7 100644 --- a/api/models/route.go +++ b/api/models/route.go @@ -150,9 +150,7 @@ func (r *Route) Update(new *Route) { if len(v) == 0 { r.Headers.Del(k) } else { - for _, val := range v { - r.Headers.Set(k, val) - } + r.Headers[k] = v } } }