-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcookie_test.go
89 lines (84 loc) · 2.46 KB
/
cookie_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package main
import (
"net/http"
"testing"
"github.com/stretchr/testify/assert"
)
func TestParseCookie(t *testing.T) {
testCases := []struct {
name string
cookieHeader string
expectedCookie *http.Cookie
expectedError bool
}{
{
name: "valid cookie",
cookieHeader: "e87d7dbd/sessid=Tg1OUU6QJQhKhY9Q1UpMkiR+; path=/; SameSite=Strict; HttpOnly",
expectedCookie: &http.Cookie{
Name: "e87d7dbd/sessid",
Value: "Tg1OUU6QJQhKhY9Q1UpMkiR+",
Path: "/",
SameSite: http.SameSiteStrictMode,
HttpOnly: true,
},
expectedError: false,
},
{
name: "missing sessid",
cookieHeader: "path=/; SameSite=Strict; HttpOnly",
expectedCookie: nil,
expectedError: true,
},
{
name: "empty cookie",
cookieHeader: "",
expectedCookie: nil,
expectedError: true,
},
{
name: "cookie with extra attributes",
cookieHeader: "e87d7dbd/sessid=Tg1OUU6QJQhKhY9Q1UpMkiR+; path=/; domain=example.com; Secure; HttpOnly",
expectedCookie: &http.Cookie{
Name: "e87d7dbd/sessid",
Value: "Tg1OUU6QJQhKhY9Q1UpMkiR+",
Path: "/",
SameSite: http.SameSiteStrictMode,
HttpOnly: true,
},
expectedError: false,
},
{
name: "cookie with spaces",
cookieHeader: " e87d7dbd/sessid=Tg1OUU6QJQhKhY9Q1UpMkiR+ ; path=/ ; SameSite=Strict ; HttpOnly ",
expectedCookie: &http.Cookie{
Name: "e87d7dbd/sessid",
Value: "Tg1OUU6QJQhKhY9Q1UpMkiR+",
Path: "/",
SameSite: http.SameSiteStrictMode,
HttpOnly: true,
},
expectedError: false,
},
{
name: "invalid cookie format",
cookieHeader: "e87d7dbd=Tg1OUU6QJQhKhY9Q1UpMkiR+; path=/; SameSite=Strict; HttpOnly",
expectedCookie: nil,
expectedError: true,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
cookie, err := parseCookie(tc.cookieHeader)
if tc.expectedError {
assert.Error(t, err, "Expected error")
} else {
assert.NoError(t, err, "Unexpected error")
assert.Equal(t, tc.expectedCookie.Name, cookie.Name, "Cookie name mismatch")
assert.Equal(t, tc.expectedCookie.Value, cookie.Value, "Cookie value mismatch")
assert.Equal(t, tc.expectedCookie.Path, cookie.Path, "Cookie path mismatch")
assert.Equal(t, tc.expectedCookie.SameSite, cookie.SameSite, "Cookie SameSite mismatch")
assert.Equal(t, tc.expectedCookie.HttpOnly, cookie.HttpOnly, "Cookie HttpOnly mismatch")
}
})
}
}