|
1 | 1 | import { StreamableHttpRunner } from "../../../src/transports/streamableHttp.js"; |
2 | 2 | import { Client } from "@modelcontextprotocol/sdk/client/index.js"; |
3 | 3 | import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; |
4 | | -import { describe, expect, it, beforeAll, afterAll } from "vitest"; |
| 4 | +import { describe, expect, it, beforeAll, afterAll, beforeEach } from "vitest"; |
5 | 5 | import { config, driverOptions } from "../../../src/common/config.js"; |
| 6 | +import type { LoggerType, LogLevel, LogPayload } from "../../../src/common/logger.js"; |
| 7 | +import { LoggerBase, LogId } from "../../../src/common/logger.js"; |
6 | 8 |
|
7 | 9 | describe("StreamableHttpRunner", () => { |
8 | 10 | let runner: StreamableHttpRunner; |
@@ -120,4 +122,35 @@ describe("StreamableHttpRunner", () => { |
120 | 122 | } |
121 | 123 | } |
122 | 124 | }); |
| 125 | + |
| 126 | + describe("with custom logger", () => { |
| 127 | + beforeEach(() => { |
| 128 | + config.loggers = []; |
| 129 | + }); |
| 130 | + |
| 131 | + class CustomLogger extends LoggerBase { |
| 132 | + protected type?: LoggerType = "console"; |
| 133 | + public messages: { level: LogLevel; payload: LogPayload }[] = []; |
| 134 | + protected logCore(level: LogLevel, payload: LogPayload): void { |
| 135 | + this.messages.push({ level, payload }); |
| 136 | + } |
| 137 | + } |
| 138 | + |
| 139 | + it("can provide custom logger", async () => { |
| 140 | + const logger = new CustomLogger(); |
| 141 | + const runner = new StreamableHttpRunner(config, driverOptions, [logger]); |
| 142 | + await runner.start(); |
| 143 | + |
| 144 | + const messages = logger.messages; |
| 145 | + expect(messages.length).toBeGreaterThan(0); |
| 146 | + |
| 147 | + const serverStartedMessage = messages.filter( |
| 148 | + (m) => m.payload.id === LogId.streamableHttpTransportStarted |
| 149 | + )[0]; |
| 150 | + expect(serverStartedMessage).toBeDefined(); |
| 151 | + expect(serverStartedMessage?.payload.message).toContain("Server started on"); |
| 152 | + expect(serverStartedMessage?.payload.context).toBe("streamableHttpTransport"); |
| 153 | + expect(serverStartedMessage?.level).toBe("info"); |
| 154 | + }); |
| 155 | + }); |
123 | 156 | }); |
0 commit comments