Files
qinglong/packages/ql3-runtime-core/test/workerExecutionAttestation.test.cjs
T

58 lines
1.8 KiB
JavaScript

const assert = require('node:assert/strict');
const { test } = require('node:test');
const {
normalizeSubmitWorkerExecutionAttestationCommand,
normalizeWorkerExecutionAttestation,
} = require('@qinglong/runtime-core/worker-attestation');
function attestation(overrides = {}) {
return {
attestationId: '018f5c64-9b9d-7f1a-8c2d-1234567890ab',
runId: 'run-1',
attemptId: 'attempt-1',
sequence: 1,
state: 'running',
workerId: 'edge-router-1',
workerSessionId: '018f5c64-9b9d-7f1a-8c2d-1234567890ac',
workerGeneration: 2,
leaseTokenDigest: 'a'.repeat(64),
leaseGeneration: 3,
leaseVersion: 4,
offerId: 'offer-1',
callbackSequence: 5,
executorHandle: 'remote:handle-1',
journalRevision: 6,
receivedAtMs: 7,
...overrides,
};
}
test('normalizes an exact immutable Worker execution attestation', () => {
const value = normalizeWorkerExecutionAttestation(attestation());
assert.deepEqual(value, attestation());
assert.equal(Object.isFrozen(value), true);
const { receivedAtMs, ...command } = attestation();
assert.deepEqual(
normalizeSubmitWorkerExecutionAttestationCommand(command),
command,
);
assert.equal(receivedAtMs, 7);
});
test('rejects widened, malformed and under-fenced attestations', () => {
for (const value of [
{ ...attestation(), extra: true },
attestation({ attestationId: 'not-v7' }),
attestation({ sequence: 0 }),
attestation({ state: 'unknown' }),
attestation({ workerSessionId: 'not-v7' }),
attestation({ workerGeneration: 0 }),
attestation({ leaseTokenDigest: 'A'.repeat(64) }),
attestation({ leaseGeneration: 0 }),
attestation({ executorHandle: '' }),
attestation({ journalRevision: 0 }),
]) {
assert.throws(() => normalizeWorkerExecutionAttestation(value));
}
});