const axios = require('axios'); const deriveBaseURL = require('./deriveBaseURL'); jest.mock('@librechat/api', () => { const originalUtils = jest.requireActual('@librechat/api'); return { ...originalUtils, processModelData: jest.fn((...args) => { return originalUtils.processModelData(...args); }), }; }); jest.mock('axios'); jest.mock('~/cache/getLogStores', () => jest.fn().mockImplementation(() => ({ get: jest.fn().mockResolvedValue(undefined), set: jest.fn().mockResolvedValue(true), })), ); jest.mock('~/config', () => ({ logger: { error: jest.fn(), }, })); axios.get.mockResolvedValue({ data: { data: [{ id: 'model-1' }, { id: 'model-2' }], }, }); describe('deriveBaseURL', () => { it('should extract the base URL correctly from a full URL with a port', () => { const fullURL = 'https://example.com:8080/path?query=123'; const baseURL = deriveBaseURL(fullURL); expect(baseURL).toEqual('https://example.com:8080'); }); it('should extract the base URL correctly from a full URL without a port', () => { const fullURL = 'https://example.com/path?query=123'; const baseURL = deriveBaseURL(fullURL); expect(baseURL).toEqual('https://example.com'); }); it('should handle URLs using the HTTP protocol', () => { const fullURL = 'http://example.com:3000/path?query=123'; const baseURL = deriveBaseURL(fullURL); expect(baseURL).toEqual('http://example.com:3000'); }); it('should return only the protocol and hostname if no port is specified', () => { const fullURL = 'http://example.com/path?query=123'; const baseURL = deriveBaseURL(fullURL); expect(baseURL).toEqual('http://example.com'); }); it('should handle URLs with uncommon protocols', () => { const fullURL = 'ftp://example.com:2121/path?query=123'; const baseURL = deriveBaseURL(fullURL); expect(baseURL).toEqual('ftp://example.com:2121'); }); it('should handle edge case where URL ends with a slash', () => { const fullURL = 'https://example.com/'; const baseURL = deriveBaseURL(fullURL); expect(baseURL).toEqual('https://example.com'); }); it('should return the original URL if the URL is invalid', () => { const invalidURL = 'htp:/example.com:8080'; const result = deriveBaseURL(invalidURL); expect(result).toBe(invalidURL); }); });