mirror of
https://github.com/better-auth/better-auth.git
synced 2026-10-19 23:53:17 -05:00
fix: preserve = padding in parsed cookies (#6789)
This commit is contained in:
committed by
github-actions[bot]
parent
dc6afbc8a1
commit
f32d2baf08
@@ -1,6 +1,11 @@
|
||||
import type { BetterAuthOptions } from "@better-auth/core";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { getCookieCache, getCookies, getSessionCookie } from "../cookies";
|
||||
import {
|
||||
getCookieCache,
|
||||
getCookies,
|
||||
getSessionCookie,
|
||||
parseCookies,
|
||||
} from "../cookies";
|
||||
import { parseUserOutput } from "../db/schema";
|
||||
import { getTestInstance } from "../test-utils/test-instance";
|
||||
import { parseSetCookieHeader } from "./cookie-utils";
|
||||
@@ -1102,3 +1107,33 @@ describe("Cookie Chunking", () => {
|
||||
expect(cache?.user?.email).toEqual(testUser.email);
|
||||
});
|
||||
});
|
||||
|
||||
describe("parse cookies", () => {
|
||||
it("should parse cookies into key-value map", () => {
|
||||
const cookieHeader =
|
||||
"better-auth.session_token=session-token.signature; better-auth.session_data=session-data.signature";
|
||||
|
||||
const parsedCookies = parseCookies(cookieHeader);
|
||||
|
||||
expect(parsedCookies.get("better-auth.session_token")).toBe(
|
||||
"session-token.signature",
|
||||
);
|
||||
expect(parsedCookies.get("better-auth.session_data")).toBe(
|
||||
"session-data.signature",
|
||||
);
|
||||
});
|
||||
|
||||
it("should securely parse the signed cookies with padding", () => {
|
||||
const cookieHeader =
|
||||
"better-auth.session_token=session-token.signature=; better-auth.session_data=session-data.signature=";
|
||||
|
||||
const parsedCookies = parseCookies(cookieHeader);
|
||||
|
||||
expect(parsedCookies.get("better-auth.session_token")).toBe(
|
||||
"session-token.signature=",
|
||||
);
|
||||
expect(parsedCookies.get("better-auth.session_data")).toBe(
|
||||
"session-data.signature=",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -352,7 +352,7 @@ export function parseCookies(cookieHeader: string) {
|
||||
const cookieMap = new Map<string, string>();
|
||||
|
||||
cookies.forEach((cookie) => {
|
||||
const [name, value] = cookie.split("=");
|
||||
const [name, value] = cookie.split(/=(.*)/s);
|
||||
cookieMap.set(name!, value!);
|
||||
});
|
||||
return cookieMap;
|
||||
|
||||
Reference in New Issue
Block a user