| 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); | |
| }); | |
| }); | |