UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

61 lines (49 loc) 2.01 kB
// @vitest-environment node import { ModelProvider } from 'model-bank'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { testProvider } from '../../providerTestUtils'; import { AgentRuntimeErrorType } from '../../types/error'; import { Lobe302AI, params } from './index'; testProvider({ Runtime: Lobe302AI, provider: ModelProvider.Ai302, defaultBaseURL: 'https://api.302.ai/v1', chatDebugEnv: 'DEBUG_AI302_CHAT_COMPLETION', chatModel: 'gpt-3.5-turbo', invalidErrorType: 'InvalidProviderAPIKey', bizErrorType: 'ProviderBizError', test: { skipAPICall: true, skipErrorHandle: true, }, }); describe('Lobe302AI - params', () => { it('should have correct baseURL', () => { expect(params.baseURL).toBe('https://api.302.ai/v1'); expect(params.provider).toBe(ModelProvider.Ai302); }); describe('handleError', () => { it('should handle 401 error as InvalidProviderAPIKey', () => { const error = new Response('Unauthorized', { status: 401 }); const result = params.chatCompletion?.handleError?.(error); expect(result?.errorType).toBe(AgentRuntimeErrorType.InvalidProviderAPIKey); expect(result?.error).toBe(401); }); it('should handle error with status property', () => { const error = { status: 401, message: 'Unauthorized' }; const result = params.chatCompletion?.handleError?.(error); expect(result?.errorType).toBe(AgentRuntimeErrorType.InvalidProviderAPIKey); }); it('should return error for non-401 status', () => { const error = new Response('Bad Request', { status: 400 }); const result = params.chatCompletion?.handleError?.(error); expect(result?.error).toBe(error); expect(result?.errorType).toBeUndefined(); }); it('should return error for generic errors', () => { const error = new Error('Network error'); const result = params.chatCompletion?.handleError?.(error); expect(result?.error).toBe(error); }); }); });