From adf2dd61e0e4b565e4b3d277383d756c320d9b1c Mon Sep 17 00:00:00 2001 From: Jiahao Luo Date: Sun, 1 Mar 2026 23:20:24 +0800 Subject: [PATCH] fix: use selected model in claude-console connectivity test payload --- .../relay/claudeConsoleRelayService.js | 6 +- tests/claudeConsoleRelayService.test.js | 70 +++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 tests/claudeConsoleRelayService.test.js diff --git a/src/services/relay/claudeConsoleRelayService.js b/src/services/relay/claudeConsoleRelayService.js index d7dcabc1..50c05275 100644 --- a/src/services/relay/claudeConsoleRelayService.js +++ b/src/services/relay/claudeConsoleRelayService.js @@ -1455,8 +1455,8 @@ class ClaudeConsoleRelayService { } // 🧪 测试账号连接(供Admin API使用) - async testAccountConnection(accountId, responseStream) { - const { sendStreamTestRequest } = require('../../utils/testPayloadHelper') + async testAccountConnection(accountId, responseStream, model) { + const { createClaudeTestPayload, sendStreamTestRequest } = require('../../utils/testPayloadHelper') try { const account = await claudeConsoleAccountService.getAccount(accountId) @@ -1470,11 +1470,13 @@ class ClaudeConsoleRelayService { const apiUrl = cleanUrl.endsWith('/v1/messages') ? cleanUrl : `${cleanUrl}/v1/messages?beta=true` + const payload = createClaudeTestPayload(model, { stream: true }) await sendStreamTestRequest({ apiUrl, authorization: `Bearer ${account.apiKey}`, responseStream, + payload, proxyAgent: claudeConsoleAccountService._createProxyAgent(account.proxy), extraHeaders: account.userAgent ? { 'User-Agent': account.userAgent } : {} }) diff --git a/tests/claudeConsoleRelayService.test.js b/tests/claudeConsoleRelayService.test.js new file mode 100644 index 00000000..3c5a88ca --- /dev/null +++ b/tests/claudeConsoleRelayService.test.js @@ -0,0 +1,70 @@ +jest.mock('../src/utils/logger', () => ({ + debug: jest.fn(), + info: jest.fn(), + warn: jest.fn(), + error: jest.fn() +})) + +jest.mock('../src/services/account/claudeConsoleAccountService', () => ({ + getAccount: jest.fn(), + _createProxyAgent: jest.fn() +})) + +jest.mock('/Users/mike/projects/claude-relay-service/config/config', () => ({}), { + virtual: true +}) +jest.mock('../src/models/redis', () => ({})) + +jest.mock('../src/utils/testPayloadHelper', () => ({ + createClaudeTestPayload: jest.fn(), + sendStreamTestRequest: jest.fn() +})) + +const claudeConsoleRelayService = require('../src/services/relay/claudeConsoleRelayService') +const claudeConsoleAccountService = require('../src/services/account/claudeConsoleAccountService') +const { + createClaudeTestPayload, + sendStreamTestRequest +} = require('../src/utils/testPayloadHelper') + +describe('claudeConsoleRelayService.testAccountConnection', () => { + beforeEach(() => { + jest.clearAllMocks() + }) + + it('passes selected model stream payload to sendStreamTestRequest', async () => { + claudeConsoleAccountService.getAccount.mockResolvedValue({ + name: 'Console A1', + apiUrl: 'https://console.example.com', + apiKey: 'test-key', + proxy: null, + userAgent: null + }) + claudeConsoleAccountService._createProxyAgent.mockReturnValue(undefined) + + const payload = { + model: 'claude-sonnet-4-6', + stream: true + } + createClaudeTestPayload.mockReturnValue(payload) + sendStreamTestRequest.mockResolvedValue(undefined) + + const res = {} + await claudeConsoleRelayService.testAccountConnection('a1', res, 'claude-sonnet-4-6') + + expect(createClaudeTestPayload).toHaveBeenCalledWith('claude-sonnet-4-6', { stream: true }) + expect(sendStreamTestRequest).toHaveBeenCalledWith( + expect.objectContaining({ + payload + }) + ) + expect(sendStreamTestRequest).toHaveBeenCalledWith( + expect.objectContaining({ + payload: expect.objectContaining({ + model: 'claude-sonnet-4-6', + stream: true + }) + }) + ) + }) +})