Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const { require } = ChromeUtils.importESModule(
"resource://devtools/shared/loader/Loader.sys.mjs"
);
const {
fetchHeaders,
} = require("resource://devtools/client/netmonitor/src/utils/request-utils.js");
add_task(async function test_fetchHeaders_resolves_long_string_values() {
const longCookieValue = "a=1; ".repeat(2001);
const mockLongStringGrip = {
type: "longString",
initial: longCookieValue.substring(0, 1000),
length: longCookieValue.length,
};
const headers = {
headers: [
{ name: "User-Agent", value: "Mozilla/5.0" },
{ name: "Cookie", value: mockLongStringGrip },
],
headersSize: 12345,
};
async function mockGetLongString(value) {
if (typeof value === "object" && value.type === "longString") {
return longCookieValue;
}
return value;
}
const result = await fetchHeaders(headers, mockGetLongString);
equal(
result.headers[0].value,
"Mozilla/5.0",
"Short string header value is preserved"
);
equal(
typeof result.headers[1].value,
"string",
"Long string Cookie header value is resolved to a string"
);
equal(
result.headers[1].value,
longCookieValue,
"Long string Cookie header value is correctly resolved to its full content"
);
});