mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-21 00:58:17 +08:00
61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
const assert = require('node:assert/strict');
|
|
const { test } = require('node:test');
|
|
|
|
const {
|
|
LocalDataDirectoryApplicationCommitError,
|
|
createLocalDataDirectoryApplicationCommit,
|
|
normalizeLocalDataDirectoryApplicationCommit,
|
|
} = require('../dist/adoption/data-directory/dataDirectoryAdoptionDatabase.js');
|
|
|
|
function adoptionRecord() {
|
|
return {
|
|
mutationId: '00000000-0000-4000-8000-000000000001',
|
|
projectId: 'project-edge-1',
|
|
profile: 'edge',
|
|
sourceStageManifestDigest: '1'.repeat(64),
|
|
transformationDigest: '2'.repeat(64),
|
|
modelDigest: '3'.repeat(64),
|
|
publicationDigest: '4'.repeat(64),
|
|
receiptDigest: '5'.repeat(64),
|
|
committedAtMs: 1_000,
|
|
receipt: {
|
|
secretCount: 3,
|
|
environmentSecretCount: 2,
|
|
sshSecretCount: 1,
|
|
},
|
|
};
|
|
}
|
|
|
|
test('canonical data application commit is exact and replayable', () => {
|
|
const commit = createLocalDataDirectoryApplicationCommit(adoptionRecord());
|
|
assert.equal(commit.kind, 'qinglong3-legacy-data-directory-application');
|
|
assert.equal(commit.state, 'committed');
|
|
assert.equal(commit.profile, 'edge');
|
|
assert.equal(commit.receiptDigest, '5'.repeat(64));
|
|
assert.equal(commit.commitDigest.length, 64);
|
|
assert.deepEqual(
|
|
normalizeLocalDataDirectoryApplicationCommit(
|
|
JSON.parse(JSON.stringify(commit)),
|
|
),
|
|
commit,
|
|
);
|
|
});
|
|
|
|
test('data application commit rejects shape, count, and digest drift', () => {
|
|
const commit = createLocalDataDirectoryApplicationCommit(adoptionRecord());
|
|
for (const drift of [
|
|
{ ...commit, unexpected: true },
|
|
{ ...commit, secretCount: 4 },
|
|
{ ...commit, receiptDigest: '0'.repeat(64) },
|
|
{
|
|
...commit,
|
|
reclamation: { ...commit.reclamation, physicalErasureGuaranteed: true },
|
|
},
|
|
]) {
|
|
assert.throws(
|
|
() => normalizeLocalDataDirectoryApplicationCommit(drift),
|
|
LocalDataDirectoryApplicationCommitError,
|
|
);
|
|
}
|
|
});
|