@@ -24,7 +24,36 @@ let parseResultCookie (_:SuaveConfig) =
2424 path = Some " /"
2525 domain = None
2626 secure = false
27- httpOnly = true }
27+ httpOnly = true
28+ sameSite = None }
29+ Expect.equal subject expected " cookie should eq"
30+
31+ testCase " parse SameSite=Strict" <| fun _ ->
32+ let sample = @" st=oFqpYxbMObHvpEW!QLzedHwSZ1gZnotBs$; Path=/; HttpOnly; SameSite=Strict"
33+ let subject = Cookie.parseResultCookie sample
34+ let expected =
35+ { name = " st"
36+ value = " oFqpYxbMObHvpEW!QLzedHwSZ1gZnotBs$"
37+ expires = None
38+ path = Some " /"
39+ domain = None
40+ secure = false
41+ httpOnly = true
42+ sameSite = Some Strict }
43+ Expect.equal subject expected " cookie should eq"
44+
45+ testCase " parse SameSite=Lax" <| fun _ ->
46+ let sample = @" st=oFqpYxbMObHvpEW!QLzedHwSZ1gZnotBs$; Path=/; HttpOnly; SameSite=Lax"
47+ let subject = Cookie.parseResultCookie sample
48+ let expected =
49+ { name = " st"
50+ value = " oFqpYxbMObHvpEW!QLzedHwSZ1gZnotBs$"
51+ expires = None
52+ path = Some " /"
53+ domain = None
54+ secure = false
55+ httpOnly = true
56+ sameSite = Some Lax }
2857 Expect.equal subject expected " cookie should eq"
2958
3059 testCase " parse secure" <| fun _ ->
@@ -35,7 +64,8 @@ let parseResultCookie (_:SuaveConfig) =
3564 path = Some " /"
3665 domain = None
3766 secure = true
38- httpOnly = false }
67+ httpOnly = false
68+ sameSite = None }
3969 let parsed = Cookie.parseResultCookie ( HttpCookie.toHeader cookie)
4070 Expect.equal parsed cookie " eq"
4171
@@ -87,7 +117,8 @@ let setCookie (_ : SuaveConfig) =
87117 path = Some " /"
88118 domain = None
89119 secure = true
90- httpOnly = false }
120+ httpOnly = false
121+ sameSite = None }
91122 let ctx = Cookie.setCookie cookie { HttpContext.empty with runtime = { HttpRuntime.empty with logger = log }}
92123 Expect.isTrue ( List.isEmpty log.logs) " Should be no logs generated"
93124 testCase " set cookie - no warning when = 4k" <| fun _ ->
@@ -99,7 +130,8 @@ let setCookie (_ : SuaveConfig) =
99130 path = Some " /"
100131 domain = None
101132 secure = true
102- httpOnly = false }
133+ httpOnly = false
134+ sameSite = None }
103135 let ctx = Cookie.setCookie cookie { HttpContext.empty with runtime = { HttpRuntime.empty with logger = log }}
104136 Expect.isTrue ( List.isEmpty log.logs) " Should be no logs generated"
105137
@@ -112,7 +144,8 @@ let setCookie (_ : SuaveConfig) =
112144 path = Some " /"
113145 domain = None
114146 secure = true
115- httpOnly = false }
147+ httpOnly = false
148+ sameSite = None }
116149 let ctx =
117150 let input = { HttpContext.empty with runtime = { HttpRuntime.empty with logger = log }}
118151 Cookie.setCookie cookie input |> Async.RunSynchronously
0 commit comments