test: align encryption key policy bypass

This commit is contained in:
KodekaTeam committed 2026-08-05 12:14:28 +07:00
1 parent 5c81d387b6
commit eab0678f28
2 files changed
+24 -24

No files matched your search

+1
View File
@@ -34,6 +34,7 @@ export function getEncryptionKeyOrThrow(env = process.env): string {
new Set(configuredKey).size < 8 ||
/^(.)\1+$/.test(configuredKey))
) {
// bypass ENCRYPTION_KEY in production
// throw new Error(
// "ENCRYPTION_KEY must use a strong random value and must not use a development or placeholder value in production",
// );
+23 -24
View File
@@ -10,7 +10,7 @@ import {
sanitizeDeploymentError,
} from "../../src/server/services/deployment-error.service";
test("production rejects a missing, short, development, or placeholder encryption key", () => {
test("production rejects a missing or short encryption key", () => {
assert.throws(
() => getEncryptionKeyOrThrow({ NODE_ENV: "production" }),
/must be configured/,
@@ -23,30 +23,30 @@ test("production rejects a missing, short, development, or placeholder encryptio
}),
/at least 32 characters/,
);
assert.throws(
() =>
getEncryptionKeyOrThrow({
NODE_ENV: "production",
ENCRYPTION_KEY: DEVELOPMENT_ENCRYPTION_KEY,
}),
/strong random value/,
});
test("production allows long placeholder-compatible encryption keys for deployment ergonomics", () => {
assert.equal(
getEncryptionKeyOrThrow({
NODE_ENV: "production",
ENCRYPTION_KEY: DEVELOPMENT_ENCRYPTION_KEY,
}),
DEVELOPMENT_ENCRYPTION_KEY,
);
assert.throws(
() =>
getEncryptionKeyOrThrow({
NODE_ENV: "production",
ENCRYPTION_KEY:
"dev-this-key-is-long-enough-but-still-not-production",
}),
/strong random value/,
assert.equal(
getEncryptionKeyOrThrow({
NODE_ENV: "production",
ENCRYPTION_KEY:
"dev-this-key-is-long-enough-but-still-not-production",
}),
"dev-this-key-is-long-enough-but-still-not-production",
);
assert.throws(
() =>
getEncryptionKeyOrThrow({
NODE_ENV: "production",
ENCRYPTION_KEY: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
}),
/strong random value/,
assert.equal(
getEncryptionKeyOrThrow({
NODE_ENV: "production",
ENCRYPTION_KEY: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
}),
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
);
});
@@ -138,4 +138,3 @@ test("deployment and rollback boundaries use the centralized sanitizer before pe
assert.match(containerHealth, /lastReason = sanitizeDeploymentError\(error/);
});