Merged via squash. Prepared head SHA: 0dac89283f54840ec2244007ff5a6178ce8b2ba9 Co-authored-by: habakan <12531644+habakan@users.noreply.github.com> Co-authored-by: grp06 <1573959+grp06@users.noreply.github.com> Reviewed-by: @grp06
50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { setDefaultSecurityHeaders } from "./http-common.js";
|
|
import { makeMockHttpResponse } from "./test-http-response.js";
|
|
|
|
describe("setDefaultSecurityHeaders", () => {
|
|
it("sets X-Content-Type-Options", () => {
|
|
const { res, setHeader } = makeMockHttpResponse();
|
|
setDefaultSecurityHeaders(res);
|
|
expect(setHeader).toHaveBeenCalledWith("X-Content-Type-Options", "nosniff");
|
|
});
|
|
|
|
it("sets Referrer-Policy", () => {
|
|
const { res, setHeader } = makeMockHttpResponse();
|
|
setDefaultSecurityHeaders(res);
|
|
expect(setHeader).toHaveBeenCalledWith("Referrer-Policy", "no-referrer");
|
|
});
|
|
|
|
it("sets Permissions-Policy", () => {
|
|
const { res, setHeader } = makeMockHttpResponse();
|
|
setDefaultSecurityHeaders(res);
|
|
expect(setHeader).toHaveBeenCalledWith(
|
|
"Permissions-Policy",
|
|
"camera=(), microphone=(), geolocation=()",
|
|
);
|
|
});
|
|
|
|
it("sets Strict-Transport-Security when provided", () => {
|
|
const { res, setHeader } = makeMockHttpResponse();
|
|
setDefaultSecurityHeaders(res, {
|
|
strictTransportSecurity: "max-age=63072000; includeSubDomains; preload",
|
|
});
|
|
expect(setHeader).toHaveBeenCalledWith(
|
|
"Strict-Transport-Security",
|
|
"max-age=63072000; includeSubDomains; preload",
|
|
);
|
|
});
|
|
|
|
it("does not set Strict-Transport-Security when not provided", () => {
|
|
const { res, setHeader } = makeMockHttpResponse();
|
|
setDefaultSecurityHeaders(res);
|
|
expect(setHeader).not.toHaveBeenCalledWith("Strict-Transport-Security", expect.anything());
|
|
});
|
|
|
|
it("does not set Strict-Transport-Security for empty string", () => {
|
|
const { res, setHeader } = makeMockHttpResponse();
|
|
setDefaultSecurityHeaders(res, { strictTransportSecurity: "" });
|
|
expect(setHeader).not.toHaveBeenCalledWith("Strict-Transport-Security", expect.anything());
|
|
});
|
|
});
|