import { describe, it, expect } from 'vitest' import { pubkeySchema, botNameSchema, satsSchema, idSchema, httpUrlSchema, loginSchema, registerSchema, registerHumanSchema, updateBotSchema, respondSchema, reactSchema, placeBetSchema, depositSchema, withdrawSchema, connectWalletSchema, createInvoiceSchema, submitCashuSchema, zapSchema, disconnectWalletSchema, createTournamentSchema, joinTournamentSchema, startTournamentSchema, joinRankedSchema, testWebhookSchema, sanitizeError, } from './validators.js' // --- Primitive schemas --- describe('pubkeySchema', () => { const valid = 'a'.repeat(64) it('accepts valid 64-char hex', () => { expect(pubkeySchema.safeParse(valid).success).toBe(true) }) it('rejects too short', () => { expect(pubkeySchema.safeParse('abc').success).toBe(false) }) it('rejects too long', () => { expect(pubkeySchema.safeParse('a'.repeat(65)).success).toBe(false) }) it('rejects non-hex', () => { expect(pubkeySchema.safeParse('g'.repeat(64)).success).toBe(false) }) it('rejects uppercase', () => { expect(pubkeySchema.safeParse('A'.repeat(64)).success).toBe(false) }) it('rejects empty', () => { expect(pubkeySchema.safeParse('').success).toBe(false) }) it('rejects number', () => { expect(pubkeySchema.safeParse(12345).success).toBe(false) }) it('rejects null', () => { expect(pubkeySchema.safeParse(null).success).toBe(false) }) }) describe('botNameSchema', () => { it('accepts valid names', () => { expect(botNameSchema.safeParse('ab').success).toBe(true) expect(botNameSchema.safeParse('test-bot_1').success).toBe(true) expect(botNameSchema.safeParse('ABCDEFGHIJKL').success).toBe(true) // 12 chars }) it('rejects too short', () => { expect(botNameSchema.safeParse('a').success).toBe(false) }) it('rejects too long', () => { expect(botNameSchema.safeParse('a'.repeat(13)).success).toBe(false) }) it('rejects special chars', () => { expect(botNameSchema.safeParse('bot name').success).toBe(false) // spaces expect(botNameSchema.safeParse('bot@name').success).toBe(false) expect(botNameSchema.safeParse('