@@ -154,9 +154,58 @@ func Test_splitCookie_joinCookies(t *testing.T) {
154 Value: value,
154 Value: value,
156 splitCookies := splitCookie(cookie)
156 splitCookies := splitCookie(cookie)
157− joinedCookie, err := joinCookies(splitCookies)
157+ joinedCookie, err := joinCookies(splitCookies, cookie.Name)
158 assert.NoError(t, err)
158 assert.NoError(t, err)
159 assert.Equal(t, *cookie, *joinedCookie)
159 assert.Equal(t, *cookie, *joinedCookie)
164+func Test_joinCookies_withUnderlineSuffix(t *testing.T) {
165+ testCases := map[string]struct {
169+ "Ascending order split with \"_\" suffix": {
170+ CookieName: "_cookie_name_",
171+ SplitOrder: []int{0, 1, 2, 3, 4},
173+ "Descending order split with \"_\" suffix": {
174+ CookieName: "_cookie_name_",
175+ SplitOrder: []int{4, 3, 2, 1, 0},
177+ "Arbitrary order split with \"_\" suffix": {
178+ CookieName: "_cookie_name_",
179+ SplitOrder: []int{3, 1, 2, 0, 4},
181+ "Arbitrary order split with \"_0\" suffix": {
182+ CookieName: "_cookie_name_0",
183+ SplitOrder: []int{1, 3, 0, 2, 4},
185+ "Arbitrary order split with \"_1\" suffix": {
186+ CookieName: "_cookie_name_1",
187+ SplitOrder: []int{4, 1, 3, 0, 2},
189+ "Arbitrary order split with \"__\" suffix": {
190+ CookieName: "_cookie_name__",
191+ SplitOrder: []int{1, 0, 4, 3, 2},
195+ for testName, testCase := range testCases {
196+ t.Run(testName, func(t *testing.T) {
197+ cookieName := testCase.CookieName
198+ var splitCookies []*http.Cookie
199+ for _, splitSuffix := range testCase.SplitOrder {
200+ cookie := &http.Cookie{
201+ Name: splitCookieName(cookieName, splitSuffix),
202+ Value: strings.Repeat("v", 1000),
204+ splitCookies = append(splitCookies, cookie)
206+ joinedCookie, err := joinCookies(splitCookies, cookieName)
207+ assert.NoError(t, err)
208+ assert.Equal(t, cookieName, joinedCookie.Name)