mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-21 00:17:47 +08:00
82 lines
2.5 KiB
JavaScript
82 lines
2.5 KiB
JavaScript
const assert = require('node:assert/strict');
|
|
const { test } = require('node:test');
|
|
|
|
const {
|
|
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
|
|
createPluginPackagePromptOutputRetentionPolicyCatalogResolver,
|
|
} = require('../dist/prompt-output/pluginPackagePromptOutputRetention');
|
|
const {
|
|
pluginPackagePromptOutputArtifactRetentionPolicyDigest,
|
|
} = require('../dist/prompt-output/pluginPackagePromptOutputArtifact');
|
|
|
|
function entry(projectId, revision, retentionMs) {
|
|
const policy = { revision, retentionMs };
|
|
return {
|
|
projectId,
|
|
policy,
|
|
policyDigest:
|
|
pluginPackagePromptOutputArtifactRetentionPolicyDigest(policy),
|
|
};
|
|
}
|
|
|
|
test('resolves one exact digest-bound Project retention policy', async () => {
|
|
const expected = entry('project-a', 'retention-v1', 3_600_000);
|
|
const resolver =
|
|
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
|
|
schemaVersion: 1,
|
|
policies: [expected, entry('project-b', 'retention-v2', 7_200_000)],
|
|
});
|
|
assert.deepEqual(
|
|
await resolver.resolve({
|
|
projectId: expected.projectId,
|
|
revision: expected.policy.revision,
|
|
}),
|
|
expected.policy,
|
|
);
|
|
assert.equal(
|
|
await resolver.resolve({
|
|
projectId: expected.projectId,
|
|
revision: 'retention-v2',
|
|
}),
|
|
null,
|
|
);
|
|
});
|
|
|
|
test('rejects rewritten, duplicate, widened and unbounded policy catalogs', () => {
|
|
const expected = entry('project-a', 'retention-v1', 3_600_000);
|
|
assert.throws(
|
|
() =>
|
|
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
|
|
schemaVersion: 1,
|
|
policies: [{ ...expected, policyDigest: '0'.repeat(64) }],
|
|
}),
|
|
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
|
|
);
|
|
assert.throws(
|
|
() =>
|
|
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
|
|
schemaVersion: 1,
|
|
policies: [expected, expected],
|
|
}),
|
|
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
|
|
);
|
|
assert.throws(
|
|
() =>
|
|
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
|
|
schemaVersion: 1,
|
|
policies: [{ ...expected, enabled: true }],
|
|
}),
|
|
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
|
|
);
|
|
assert.throws(
|
|
() =>
|
|
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
|
|
schemaVersion: 1,
|
|
policies: Array.from({ length: 129 }, (_, index) =>
|
|
entry(`project-${index}`, 'retention-v1', 3_600_000),
|
|
),
|
|
}),
|
|
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
|
|
);
|
|
});
|