one
Version:
One is a new React Framework that makes Vite serve both native and web.
92 lines • 4.09 kB
JavaScript
var import_vitest = require("vitest");
var import_one_server_only = require("./one-server-only.cjs");
(0, import_vitest.describe)("mergeHeaders", () => {
(0, import_vitest.it)("merges regular headers", () => {
const onto = new Headers({
"content-type": "text/html"
});
const from = new Headers({
"x-custom": "value"
});
(0, import_one_server_only.mergeHeaders)(onto, from);
(0, import_vitest.expect)(onto.get("content-type")).toBe("text/html");
(0, import_vitest.expect)(onto.get("x-custom")).toBe("value");
});
(0, import_vitest.it)("overrides existing headers with set()", () => {
const onto = new Headers({
"cache-control": "no-cache"
});
const from = new Headers({
"cache-control": "max-age=3600"
});
(0, import_one_server_only.mergeHeaders)(onto, from);
(0, import_vitest.expect)(onto.get("cache-control")).toBe("max-age=3600");
});
(0, import_vitest.it)("deletes headers when value is undefined", () => {
const onto = new Headers({
"x-remove": "present"
});
const from = new Headers();
from.set("x-remove", "undefined");
(0, import_one_server_only.mergeHeaders)(onto, from);
(0, import_vitest.expect)(onto.has("x-remove")).toBe(false);
});
(0, import_vitest.it)("preserves multiple set-cookie headers from source", () => {
const onto = new Headers();
const from = new Headers();
from.append("set-cookie", "session=abc123; Path=/; HttpOnly");
from.append("set-cookie", "theme=dark; Path=/");
(0, import_one_server_only.mergeHeaders)(onto, from);
const cookies = onto.getSetCookie();
(0, import_vitest.expect)(cookies).toHaveLength(2);
(0, import_vitest.expect)(cookies).toContain("session=abc123; Path=/; HttpOnly");
(0, import_vitest.expect)(cookies).toContain("theme=dark; Path=/");
});
(0, import_vitest.it)("preserves existing set-cookie headers on target when merging", () => {
const onto = new Headers();
onto.append("set-cookie", "existing=keep; Path=/");
const from = new Headers();
from.append("set-cookie", "new=added; Path=/");
(0, import_one_server_only.mergeHeaders)(onto, from);
const cookies = onto.getSetCookie();
(0, import_vitest.expect)(cookies).toHaveLength(2);
(0, import_vitest.expect)(cookies).toContain("existing=keep; Path=/");
(0, import_vitest.expect)(cookies).toContain("new=added; Path=/");
});
(0, import_vitest.it)("handles three or more set-cookie headers", () => {
const onto = new Headers();
const from = new Headers();
from.append("set-cookie", "a=1; Path=/");
from.append("set-cookie", "b=2; Path=/");
from.append("set-cookie", "c=3; Path=/");
(0, import_one_server_only.mergeHeaders)(onto, from);
const cookies = onto.getSetCookie();
(0, import_vitest.expect)(cookies).toHaveLength(3);
(0, import_vitest.expect)(cookies).toContain("a=1; Path=/");
(0, import_vitest.expect)(cookies).toContain("b=2; Path=/");
(0, import_vitest.expect)(cookies).toContain("c=3; Path=/");
});
(0, import_vitest.it)("merges set-cookie alongside regular headers", () => {
const onto = new Headers();
const from = new Headers({
"content-type": "text/html"
});
from.append("set-cookie", "session=abc; Path=/");
from.append("set-cookie", "csrf=xyz; Path=/");
(0, import_one_server_only.mergeHeaders)(onto, from);
(0, import_vitest.expect)(onto.get("content-type")).toBe("text/html");
const cookies = onto.getSetCookie();
(0, import_vitest.expect)(cookies).toHaveLength(2);
(0, import_vitest.expect)(cookies).toContain("session=abc; Path=/");
(0, import_vitest.expect)(cookies).toContain("csrf=xyz; Path=/");
});
(0, import_vitest.it)("handles source with no set-cookie headers", () => {
const onto = new Headers();
const from = new Headers({
"x-foo": "bar"
});
(0, import_one_server_only.mergeHeaders)(onto, from);
(0, import_vitest.expect)(onto.getSetCookie()).toHaveLength(0);
(0, import_vitest.expect)(onto.get("x-foo")).toBe("bar");
});
});