mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-22 02:27:44 +08:00
feat(ql3): establish 3.0 incubation baseline
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
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,
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user