Skip to main content
Glama
mkXultra
by mkXultra
MessageValidator.test.ts5.33 kB
import { describe, it, expect } from 'vitest'; import { MessageValidator } from '../../../src/features/messaging/MessageValidator'; import { ValidationError } from '../../../src/errors/AppError'; describe('MessageValidator', () => { describe('validateSendMessage', () => { it('should validate valid send message parameters', () => { const validParams = { agentName: 'test-agent', roomName: 'test-room', message: 'Hello world!' }; const result = MessageValidator.validateSendMessage(validParams); expect(result).toEqual(validParams); }); it('should validate send message with metadata', () => { const validParams = { agentName: 'test-agent', roomName: 'test-room', message: 'Hello world!', metadata: { priority: 'high', category: 'announcement' } }; const result = MessageValidator.validateSendMessage(validParams); expect(result).toEqual(validParams); }); it('should throw ValidationError for empty agent name', () => { const invalidParams = { agentName: '', roomName: 'test-room', message: 'Hello world!' }; expect(() => MessageValidator.validateSendMessage(invalidParams)).toThrow(ValidationError); }); it('should throw ValidationError for agent name too long', () => { const invalidParams = { agentName: 'a'.repeat(51), roomName: 'test-room', message: 'Hello world!' }; expect(() => MessageValidator.validateSendMessage(invalidParams)).toThrow(ValidationError); }); it('should throw ValidationError for invalid room name', () => { const invalidParams = { agentName: 'test-agent', roomName: 'test room!', message: 'Hello world!' }; expect(() => MessageValidator.validateSendMessage(invalidParams)).toThrow(ValidationError); }); it('should throw ValidationError for empty message', () => { const invalidParams = { agentName: 'test-agent', roomName: 'test-room', message: '' }; expect(() => MessageValidator.validateSendMessage(invalidParams)).toThrow(ValidationError); }); it('should throw ValidationError for message too long', () => { const invalidParams = { agentName: 'test-agent', roomName: 'test-room', message: 'a'.repeat(2001) }; expect(() => MessageValidator.validateSendMessage(invalidParams)).toThrow(ValidationError); }); }); describe('validateGetMessages', () => { it('should validate valid get messages parameters', () => { const validParams = { roomName: 'test-room' }; const result = MessageValidator.validateGetMessages(validParams); expect(result.roomName).toBe('test-room'); expect(result.limit).toBe(50); expect(result.offset).toBe(0); expect(result.mentionsOnly).toBe(false); }); it('should validate get messages with all parameters', () => { const validParams = { roomName: 'test-room', agentName: 'test-agent', limit: 100, offset: 20, mentionsOnly: true }; const result = MessageValidator.validateGetMessages(validParams); expect(result).toEqual(validParams); }); it('should throw ValidationError for invalid room name', () => { const invalidParams = { roomName: 'test room!' }; expect(() => MessageValidator.validateGetMessages(invalidParams)).toThrow(ValidationError); }); it('should throw ValidationError for limit too large', () => { const invalidParams = { roomName: 'test-room', limit: 1001 }; expect(() => MessageValidator.validateGetMessages(invalidParams)).toThrow(ValidationError); }); it('should throw ValidationError for negative offset', () => { const invalidParams = { roomName: 'test-room', offset: -1 }; expect(() => MessageValidator.validateGetMessages(invalidParams)).toThrow(ValidationError); }); }); describe('extractMentions', () => { it('should extract mentions from message', () => { const message = 'Hello @alice and @bob, how are you?'; const mentions = MessageValidator.extractMentions(message); expect(mentions).toEqual(['alice', 'bob']); }); it('should extract mentions with underscores and hyphens', () => { const message = 'Hey @test_agent and @another-agent!'; const mentions = MessageValidator.extractMentions(message); expect(mentions).toEqual(['test_agent', 'another-agent']); }); it('should handle duplicate mentions', () => { const message = 'Hello @alice, @bob, and @alice again!'; const mentions = MessageValidator.extractMentions(message); expect(mentions).toEqual(['alice', 'bob']); }); it('should return empty array for no mentions', () => { const message = 'Hello everyone!'; const mentions = MessageValidator.extractMentions(message); expect(mentions).toEqual([]); }); it('should handle mentions at start and end', () => { const message = '@alice hello @bob'; const mentions = MessageValidator.extractMentions(message); expect(mentions).toEqual(['alice', 'bob']); }); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mkXultra/agent-communication-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server