mirror of
https://github.com/wahyd4/heygo.git
synced 2026-08-08 21:05:48 +10:00
55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { ALIAS_MAX_LENGTH, normalizeAlias, validateAlias } from '../worker/lib/aliases';
|
|
|
|
describe('alias normalization', () => {
|
|
it('lowercases aliases', () => {
|
|
expect(normalizeAlias('Claude')).toBe('claude');
|
|
});
|
|
|
|
it('trims aliases', () => {
|
|
expect(normalizeAlias(' claude ')).toBe('claude');
|
|
});
|
|
|
|
it('keeps hyphen and underscore', () => {
|
|
expect(normalizeAlias('my_link-1')).toBe('my_link-1');
|
|
});
|
|
});
|
|
|
|
describe('alias validation', () => {
|
|
it('rejects empty string with exact error', () => {
|
|
expect(validateAlias('')).toEqual({ ok: false, error: 'Alias is required' });
|
|
expect(validateAlias(' ')).toEqual({ ok: false, error: 'Alias is required' });
|
|
});
|
|
|
|
it('rejects invalid characters with exact error', () => {
|
|
for (const alias of ['a/b', 'a.b', 'a b', '中文']) {
|
|
expect(validateAlias(alias)).toEqual({
|
|
ok: false,
|
|
error: 'Alias may contain only letters, numbers, underscore, and hyphen',
|
|
});
|
|
}
|
|
});
|
|
|
|
it('rejects aliases starting with hyphen or underscore', () => {
|
|
expect(validateAlias('-alias')).toEqual({
|
|
ok: false,
|
|
error: 'Alias may contain only letters, numbers, underscore, and hyphen',
|
|
});
|
|
expect(validateAlias('_alias')).toEqual({
|
|
ok: false,
|
|
error: 'Alias may contain only letters, numbers, underscore, and hyphen',
|
|
});
|
|
});
|
|
|
|
it('accepts length 100 and rejects length 101', () => {
|
|
const validAlias = 'a'.repeat(ALIAS_MAX_LENGTH);
|
|
const tooLongAlias = 'a'.repeat(ALIAS_MAX_LENGTH + 1);
|
|
|
|
expect(validateAlias(validAlias)).toEqual({ ok: true, value: validAlias });
|
|
expect(validateAlias(tooLongAlias)).toEqual({
|
|
ok: false,
|
|
error: 'Alias must be 100 characters or fewer',
|
|
});
|
|
});
|
|
});
|