mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 00:40:14 +01:00
77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
|
|
const { addOpenAPISpecs, transformSpec } = require('./addOpenAPISpecs');
|
||
|
|
const { loadSpecs } = require('./loadSpecs');
|
||
|
|
const { createOpenAPIPlugin } = require('../dynamic/OpenAPIPlugin');
|
||
|
|
|
||
|
|
jest.mock('./loadSpecs');
|
||
|
|
jest.mock('../dynamic/OpenAPIPlugin');
|
||
|
|
|
||
|
|
describe('transformSpec', () => {
|
||
|
|
it('should transform input spec to a desired format', () => {
|
||
|
|
const input = {
|
||
|
|
name_for_human: 'Human Name',
|
||
|
|
name_for_model: 'Model Name',
|
||
|
|
description_for_human: 'Human Description',
|
||
|
|
logo_url: 'https://example.com/logo.png',
|
||
|
|
};
|
||
|
|
|
||
|
|
const expectedOutput = {
|
||
|
|
name: 'Human Name',
|
||
|
|
pluginKey: 'Model Name',
|
||
|
|
description: 'Human Description',
|
||
|
|
icon: 'https://example.com/logo.png',
|
||
|
|
isAuthRequired: 'false',
|
||
|
|
authConfig: [],
|
||
|
|
};
|
||
|
|
|
||
|
|
expect(transformSpec(input)).toEqual(expectedOutput);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should use default icon if logo_url is not provided', () => {
|
||
|
|
const input = {
|
||
|
|
name_for_human: 'Human Name',
|
||
|
|
name_for_model: 'Model Name',
|
||
|
|
description_for_human: 'Human Description',
|
||
|
|
};
|
||
|
|
|
||
|
|
const expectedOutput = {
|
||
|
|
name: 'Human Name',
|
||
|
|
pluginKey: 'Model Name',
|
||
|
|
description: 'Human Description',
|
||
|
|
icon: 'https://placehold.co/70x70.png',
|
||
|
|
isAuthRequired: 'false',
|
||
|
|
authConfig: [],
|
||
|
|
};
|
||
|
|
|
||
|
|
expect(transformSpec(input)).toEqual(expectedOutput);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
describe('addOpenAPISpecs', () => {
|
||
|
|
it('should add specs to available tools', async () => {
|
||
|
|
const availableTools = ['Tool1', 'Tool2'];
|
||
|
|
const specs = [
|
||
|
|
{
|
||
|
|
name_for_human: 'Human Name',
|
||
|
|
name_for_model: 'Model Name',
|
||
|
|
description_for_human: 'Human Description',
|
||
|
|
logo_url: 'https://example.com/logo.png',
|
||
|
|
},
|
||
|
|
];
|
||
|
|
|
||
|
|
loadSpecs.mockResolvedValue(specs);
|
||
|
|
createOpenAPIPlugin.mockReturnValue('Plugin');
|
||
|
|
|
||
|
|
const result = await addOpenAPISpecs(availableTools);
|
||
|
|
expect(result).toEqual([...specs.map(transformSpec), ...availableTools]);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should return available tools if specs loading fails', async () => {
|
||
|
|
const availableTools = ['Tool1', 'Tool2'];
|
||
|
|
|
||
|
|
loadSpecs.mockRejectedValue(new Error('Failed to load specs'));
|
||
|
|
|
||
|
|
const result = await addOpenAPISpecs(availableTools);
|
||
|
|
expect(result).toEqual(availableTools);
|
||
|
|
});
|
||
|
|
});
|