mirror of
https://github.com/rmyndharis/antigravity-skills.git
synced 2026-09-19 02:19:16 +08:00
33 lines
1.4 KiB
JavaScript
33 lines
1.4 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert');
|
|
|
|
test('cli.js can be required without executing the program', () => {
|
|
const cli = require('../bin/cli.js');
|
|
assert.strictEqual(typeof cli.sanitizeSkillId, 'function');
|
|
assert.strictEqual(typeof cli.resolveSkillId, 'function');
|
|
assert.strictEqual(typeof cli.resolveSkillPath, 'function');
|
|
assert.strictEqual(typeof cli.scoreSkill, 'function');
|
|
});
|
|
|
|
test('sanitizeSkillId accepts kebab-case and rejects junk', () => {
|
|
const { sanitizeSkillId } = require('../bin/cli.js');
|
|
assert.strictEqual(sanitizeSkillId('Python-Pro'), 'python-pro');
|
|
assert.strictEqual(sanitizeSkillId('../evil'), null);
|
|
assert.strictEqual(sanitizeSkillId('a b'), null);
|
|
assert.strictEqual(sanitizeSkillId(''), null);
|
|
});
|
|
|
|
test('resolveSkillId applies alias map after sanitize', () => {
|
|
const { resolveSkillId } = require('../bin/cli.js');
|
|
const aliases = { 'full-stack-feature': 'full-stack-orchestration-full-stack-feature' };
|
|
assert.strictEqual(resolveSkillId('full-stack-feature', aliases), 'full-stack-orchestration-full-stack-feature');
|
|
assert.strictEqual(resolveSkillId('python-pro', aliases), 'python-pro');
|
|
assert.strictEqual(resolveSkillId('../x', aliases), null);
|
|
});
|
|
|
|
test('resolveSkillPath rejects path traversal', () => {
|
|
const { resolveSkillPath } = require('../bin/cli.js');
|
|
assert.strictEqual(resolveSkillPath('..'), null);
|
|
assert.notStrictEqual(resolveSkillPath('python-pro'), null);
|
|
});
|