| | import { logger } from '@librechat/data-schemas'; |
| | import type { Logger } from '@librechat/agents'; |
| | import { getBasePath } from './path'; |
| |
|
| | describe('getBasePath', () => { |
| | let originalDomainClient: string | undefined; |
| |
|
| | beforeEach(() => { |
| | originalDomainClient = process.env.DOMAIN_CLIENT; |
| | }); |
| |
|
| | afterEach(() => { |
| | process.env.DOMAIN_CLIENT = originalDomainClient; |
| | }); |
| |
|
| | it('should return empty string when DOMAIN_CLIENT is not set', () => { |
| | delete process.env.DOMAIN_CLIENT; |
| | expect(getBasePath()).toBe(''); |
| | }); |
| |
|
| | it('should return empty string when DOMAIN_CLIENT is root path', () => { |
| | process.env.DOMAIN_CLIENT = 'http://localhost:3080/'; |
| | expect(getBasePath()).toBe(''); |
| | }); |
| |
|
| | it('should return base path for subdirectory deployment', () => { |
| | process.env.DOMAIN_CLIENT = 'http://localhost:3080/librechat'; |
| | expect(getBasePath()).toBe('/librechat'); |
| | }); |
| |
|
| | it('should return base path without trailing slash', () => { |
| | process.env.DOMAIN_CLIENT = 'http://localhost:3080/librechat/'; |
| | expect(getBasePath()).toBe('/librechat'); |
| | }); |
| |
|
| | it('should handle nested subdirectories', () => { |
| | process.env.DOMAIN_CLIENT = 'http://localhost:3080/apps/librechat'; |
| | expect(getBasePath()).toBe('/apps/librechat'); |
| | }); |
| |
|
| | it('should handle HTTPS URLs', () => { |
| | process.env.DOMAIN_CLIENT = 'https://example.com/librechat'; |
| | expect(getBasePath()).toBe('/librechat'); |
| | }); |
| |
|
| | it('should handle URLs with query parameters', () => { |
| | process.env.DOMAIN_CLIENT = 'http://localhost:3080/librechat?param=value'; |
| | expect(getBasePath()).toBe('/librechat'); |
| | }); |
| |
|
| | it('should handle URLs with fragments', () => { |
| | process.env.DOMAIN_CLIENT = 'http://localhost:3080/librechat#section'; |
| | expect(getBasePath()).toBe('/librechat'); |
| | }); |
| |
|
| | it('should return empty string for invalid URL', () => { |
| | process.env.DOMAIN_CLIENT = 'not-a-valid-url'; |
| | |
| | const loggerSpy = jest.spyOn(logger, 'warn').mockImplementation(() => { |
| | return logger as unknown as Logger; |
| | }); |
| | expect(getBasePath()).toBe(''); |
| | expect(loggerSpy).toHaveBeenCalledWith( |
| | 'Error parsing DOMAIN_CLIENT for base path:', |
| | expect.objectContaining({ |
| | message: 'Invalid URL', |
| | }), |
| | ); |
| | loggerSpy.mockRestore(); |
| | }); |
| |
|
| | it('should handle empty string DOMAIN_CLIENT', () => { |
| | process.env.DOMAIN_CLIENT = ''; |
| | expect(getBasePath()).toBe(''); |
| | }); |
| |
|
| | it('should handle undefined DOMAIN_CLIENT', () => { |
| | process.env.DOMAIN_CLIENT = undefined; |
| | expect(getBasePath()).toBe(''); |
| | }); |
| |
|
| | it('should handle null DOMAIN_CLIENT', () => { |
| | |
| | process.env.DOMAIN_CLIENT = null; |
| | expect(getBasePath()).toBe(''); |
| | }); |
| |
|
| | it('should handle URLs with ports', () => { |
| | process.env.DOMAIN_CLIENT = 'http://localhost:8080/librechat'; |
| | expect(getBasePath()).toBe('/librechat'); |
| | }); |
| |
|
| | it('should handle URLs with subdomains', () => { |
| | process.env.DOMAIN_CLIENT = 'https://app.example.com/librechat'; |
| | expect(getBasePath()).toBe('/librechat'); |
| | }); |
| | }); |
| |
|