Skip to main content
Glama

Office MCP Server

by walkingzzzy
SessionManager.test.ts4.3 kB
import { SessionManager } from '../services/SessionManager'; describe('会话管理器单元测试', () => { let sessionManager: SessionManager; beforeEach(() => { sessionManager = new SessionManager(); }); describe('会话创建', () => { it('应该创建新会话', () => { const sessionId = sessionManager.createSession(); expect(sessionId).toBeDefined(); expect(typeof sessionId).toBe('string'); expect(sessionId.length).toBeGreaterThan(0); }); it('应该为每个会话生成唯一ID', () => { const sessionId1 = sessionManager.createSession(); const sessionId2 = sessionManager.createSession(); expect(sessionId1).not.toBe(sessionId2); }); }); describe('会话验证', () => { it('应该验证有效会话', () => { const sessionId = sessionManager.createSession(); expect(sessionManager.isValidSession(sessionId)).toBe(true); }); it('应该拒绝无效会话', () => { expect(sessionManager.isValidSession('invalid-session')).toBe(false); expect(sessionManager.isValidSession('')).toBe(false); expect(sessionManager.isValidSession(null as any)).toBe(false); }); }); describe('会话数据管理', () => { it('应该存储和检索会话数据', () => { const sessionId = sessionManager.createSession(); const testData = { key: 'value', number: 123 }; sessionManager.setSessionData(sessionId, 'testKey', testData); const retrievedData = sessionManager.getSessionData(sessionId, 'testKey'); expect(retrievedData).toEqual(testData); }); it('应该返回undefined对于不存在的数据', () => { const sessionId = sessionManager.createSession(); const data = sessionManager.getSessionData(sessionId, 'nonexistent'); expect(data).toBeUndefined(); }); it('应该处理无效会话的数据操作', () => { expect(() => { sessionManager.setSessionData('invalid', 'key', 'value'); }).toThrow('会话不存在'); expect(() => { sessionManager.getSessionData('invalid', 'key'); }).toThrow('会话不存在'); }); }); describe('会话清理', () => { it('应该删除会话', () => { const sessionId = sessionManager.createSession(); sessionManager.setSessionData(sessionId, 'key', 'value'); sessionManager.destroySession(sessionId); expect(sessionManager.isValidSession(sessionId)).toBe(false); expect(() => { sessionManager.getSessionData(sessionId, 'key'); }).toThrow('会话不存在'); }); it('应该处理删除不存在的会话', () => { expect(() => { sessionManager.destroySession('nonexistent'); }).not.toThrow(); }); }); describe('会话统计', () => { it('应该返回活跃会话数量', () => { const initialCount = sessionManager.getActiveSessionCount(); const sessionId1 = sessionManager.createSession(); const sessionId2 = sessionManager.createSession(); expect(sessionManager.getActiveSessionCount()).toBe(initialCount + 2); sessionManager.destroySession(sessionId1); expect(sessionManager.getActiveSessionCount()).toBe(initialCount + 1); }); it('应该返回所有活跃会话ID', () => { const sessionId1 = sessionManager.createSession(); const sessionId2 = sessionManager.createSession(); const activeSessions = sessionManager.getActiveSessions(); expect(activeSessions).toContain(sessionId1); expect(activeSessions).toContain(sessionId2); }); }); describe('会话过期', () => { it('应该设置会话过期时间', () => { const sessionId = sessionManager.createSession(); const expiryTime = Date.now() + 60000; // 1分钟后过期 sessionManager.setSessionExpiry(sessionId, expiryTime); expect(sessionManager.isValidSession(sessionId)).toBe(true); }); it('应该清理过期会话', () => { const sessionId = sessionManager.createSession(); const pastTime = Date.now() - 1000; // 1秒前过期 sessionManager.setSessionExpiry(sessionId, pastTime); sessionManager.cleanupExpiredSessions(); expect(sessionManager.isValidSession(sessionId)).toBe(false); }); }); });

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/walkingzzzy/office-mcp'

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