Governed substrate for autonomous agents: scoped identity (passports), audited actions, MCP workspace. Infra IPs and secrets redacted for public release.
63 lines
2.2 KiB
JavaScript
63 lines
2.2 KiB
JavaScript
// base_id Generator Tests (v0.002.006)
|
|
// Format: [A-Z0-9]{8}
|
|
import { describe, test, expect } from 'vitest';
|
|
import { generateBaseId, isValidBaseId } from '../utils/baseId.js';
|
|
|
|
describe('base_id Generator', () => {
|
|
test('should generate correct format [A-Z0-9]{8}', () => {
|
|
const baseId = generateBaseId();
|
|
expect(baseId).toMatch(/^[A-Z0-9]{8}$/);
|
|
expect(baseId).toHaveLength(8);
|
|
});
|
|
|
|
test('should generate unique base_ids', () => {
|
|
const baseId1 = generateBaseId();
|
|
const baseId2 = generateBaseId();
|
|
expect(baseId1).not.toBe(baseId2);
|
|
});
|
|
|
|
test('should have low collision probability', () => {
|
|
const generated = new Set();
|
|
const count = 1000;
|
|
for (let i = 0; i < count; i++) {
|
|
generated.add(generateBaseId());
|
|
}
|
|
expect(generated.size).toBeGreaterThan(count * 0.99);
|
|
});
|
|
|
|
test('should validate correct base_ids', () => {
|
|
expect(isValidBaseId('ABC12DEF')).toBe(true);
|
|
expect(isValidBaseId('XYZ789QW')).toBe(true);
|
|
expect(isValidBaseId('12345678')).toBe(true);
|
|
expect(isValidBaseId('ABCDEFGH')).toBe(true);
|
|
});
|
|
|
|
test('should reject invalid base_ids', () => {
|
|
expect(isValidBaseId('abc12def')).toBe(false);
|
|
expect(isValidBaseId('ABC12DE')).toBe(false);
|
|
expect(isValidBaseId('ABC12DEFG')).toBe(false);
|
|
expect(isValidBaseId('ABC-12-DEF')).toBe(false);
|
|
expect(isValidBaseId('')).toBe(false);
|
|
expect(isValidBaseId(null)).toBe(false);
|
|
expect(isValidBaseId(123)).toBe(false);
|
|
});
|
|
|
|
// ADR-0156 §Decision.3: stored base_ids include prefixed lineages that the
|
|
// old strict regex wrongly rejected. isValidBaseId is now advisory and
|
|
// tolerates these documented forms.
|
|
test('should accept documented prefixed base_ids', () => {
|
|
expect(isValidBaseId('doc-134298')).toBe(true);
|
|
expect(isValidBaseId('skill-foo')).toBe(true);
|
|
expect(isValidBaseId('ext_AB12')).toBe(true);
|
|
expect(isValidBaseId('op-x1')).toBe(true);
|
|
expect(isValidBaseId('ticket-test-123')).toBe(true);
|
|
expect(isValidBaseId('conv-9f8a')).toBe(true);
|
|
});
|
|
|
|
test('should generate only uppercase and numbers', () => {
|
|
for (let i = 0; i < 100; i++) {
|
|
const baseId = generateBaseId();
|
|
expect(baseId).toMatch(/^[A-Z0-9]+$/);
|
|
}
|
|
});
|
|
});
|