Files
qinglong/test/back/ql3VaultKvWorkerSecretDeploymentAudit.test.cjs
T

48 lines
1.5 KiB
JavaScript

'use strict';
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const { test } = require('node:test');
const {
auditVaultKvWorkerSecretDeployment,
} = require('../../scripts/ql3-vault-kv-worker-secret-deployment-audit.cjs');
const ROOT = path.resolve(__dirname, '../..');
test('accepts the exact direct Vault KV deployment overlay', () => {
assert.deepEqual(auditVaultKvWorkerSecretDeployment({ root: ROOT }), {
schemaVersion: 1,
provider: 'vault-kv-v2',
mountedValueProjection: false,
findings: [],
compatible: true,
});
});
test('rejects a restored mounted-value projection or broad token TTL', () => {
const readFile = (file, encoding) => {
const source = fs.readFileSync(file, encoding);
if (!file.endsWith('deployment-patch.yaml')) return source;
return source
.replace(
"QL3_WORKER_SECRET_VAULT_MAX_TOKEN_TTL_SECONDS\n value: '900'",
"QL3_WORKER_SECRET_VAULT_MAX_TOKEN_TTL_SECONDS\n value: '3600'",
)
.replace(
'- name: worker-secret-values\n $patch: delete',
'- name: worker-secret-values\n mountPath: /run/values',
);
};
const result = auditVaultKvWorkerSecretDeployment({ root: ROOT, readFile });
assert.equal(result.compatible, false);
assert.deepEqual(
result.findings.map(({ code }) => code),
[
'QL3_VAULT_KV_WORKER_SECRET_ENVIRONMENT_INVALID',
'QL3_VAULT_KV_WORKER_SECRET_PROJECTION_INVALID',
],
);
});