Skip to content

Commit a27a19a

Browse files
Use BuildCookie function when setting cookie in Istio router
Signed-off-by: Renato Vassão <[email protected]>
1 parent bef1a4a commit a27a19a

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

pkg/router/istio.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -532,9 +532,7 @@ func (ir *IstioRouter) SetRoutes(
532532
}
533533
}
534534
routeDest.Headers.Response.Add = map[string]string{
535-
setCookieHeader: fmt.Sprintf("%s; %s=%d", canary.Status.SessionAffinityCookie, maxAgeAttr,
536-
canary.Spec.Analysis.SessionAffinity.GetMaxAge(),
537-
),
535+
setCookieHeader: canary.Spec.Analysis.SessionAffinity.BuildCookie(canary.Status.SessionAffinityCookie),
538536
}
539537
}
540538
weightedRoute.Route[i] = routeDest

pkg/router/istio_test.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,14 @@ func TestIstioRouter_SetRoutes(t *testing.T) {
190190
cookieKey := "flagger-cookie"
191191
// enable session affinity and start canary run
192192
canary.Spec.Analysis.SessionAffinity = &v1beta1.SessionAffinity{
193-
CookieName: cookieKey,
194-
MaxAge: 300,
193+
CookieName: cookieKey,
194+
Domain: "flagger.app",
195+
HttpOnly: true,
196+
MaxAge: 300,
197+
Partitioned: true,
198+
Path: "/app",
199+
SameSite: "Strict",
200+
Secure: true,
195201
}
196202
err := router.SetRoutes(canary, 0, 10, false)
197203

@@ -231,7 +237,13 @@ func TestIstioRouter_SetRoutes(t *testing.T) {
231237
val, ok := routeDest.Headers.Response.Add[setCookieHeader]
232238
assert.True(t, ok)
233239
assert.True(t, strings.HasPrefix(val, cookieKey))
240+
assert.True(t, strings.Contains(val, "Domain=flagger.app"))
241+
assert.True(t, strings.Contains(val, "HttpOnly"))
234242
assert.True(t, strings.Contains(val, "Max-Age=300"))
243+
assert.True(t, strings.Contains(val, "Partitioned"))
244+
assert.True(t, strings.Contains(val, "Path=/app"))
245+
assert.True(t, strings.Contains(val, "SameSite=Strict"))
246+
assert.True(t, strings.Contains(val, "Secure"))
235247
}
236248
}
237249
assert.True(t, strings.HasPrefix(canary.Status.SessionAffinityCookie, cookieKey))
@@ -286,7 +298,13 @@ func TestIstioRouter_SetRoutes(t *testing.T) {
286298
val, ok := routeDest.Headers.Response.Add[setCookieHeader]
287299
assert.True(t, ok)
288300
assert.True(t, strings.HasPrefix(val, cookieKey))
301+
assert.True(t, strings.Contains(val, "Domain=flagger.app"))
302+
assert.True(t, strings.Contains(val, "HttpOnly"))
289303
assert.True(t, strings.Contains(val, "Max-Age=300"))
304+
assert.True(t, strings.Contains(val, "Partitioned"))
305+
assert.True(t, strings.Contains(val, "Path=/app"))
306+
assert.True(t, strings.Contains(val, "SameSite=Strict"))
307+
assert.True(t, strings.Contains(val, "Secure"))
290308
}
291309
}
292310
assert.True(t, strings.HasPrefix(canary.Status.SessionAffinityCookie, cookieKey))

0 commit comments

Comments
 (0)