mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-03-13 11:26:18 +01:00
158 lines
3.6 KiB
TypeScript
158 lines
3.6 KiB
TypeScript
|
|
jest.mock('@librechat/data-schemas', () => ({
|
||
|
|
...jest.requireActual('@librechat/data-schemas'),
|
||
|
|
logger: {
|
||
|
|
info: jest.fn(),
|
||
|
|
warn: jest.fn(),
|
||
|
|
error: jest.fn(),
|
||
|
|
},
|
||
|
|
}));
|
||
|
|
|
||
|
|
import { AppService } from '@librechat/data-schemas';
|
||
|
|
|
||
|
|
describe('AppService interface configuration', () => {
|
||
|
|
beforeEach(() => {
|
||
|
|
jest.clearAllMocks();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should set prompts to true when config specifies prompts as true', async () => {
|
||
|
|
const config = {
|
||
|
|
interface: {
|
||
|
|
prompts: true,
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
const result = await AppService({ config });
|
||
|
|
|
||
|
|
expect(result).toEqual(
|
||
|
|
expect.objectContaining({
|
||
|
|
interfaceConfig: expect.objectContaining({
|
||
|
|
prompts: true,
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should set prompts and bookmarks to false when config specifies them as false', async () => {
|
||
|
|
const config = {
|
||
|
|
interface: {
|
||
|
|
prompts: false,
|
||
|
|
bookmarks: false,
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
const result = await AppService({ config });
|
||
|
|
|
||
|
|
expect(result).toEqual(
|
||
|
|
expect.objectContaining({
|
||
|
|
interfaceConfig: expect.objectContaining({
|
||
|
|
prompts: false,
|
||
|
|
bookmarks: false,
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should not set prompts and bookmarks when not provided in config', async () => {
|
||
|
|
const config = {};
|
||
|
|
|
||
|
|
const result = await AppService({ config });
|
||
|
|
|
||
|
|
expect(result).toEqual(
|
||
|
|
expect.objectContaining({
|
||
|
|
interfaceConfig: expect.anything(),
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
|
||
|
|
// Verify that prompts and bookmarks are undefined when not provided
|
||
|
|
expect(result.interfaceConfig?.prompts).toBeUndefined();
|
||
|
|
expect(result.interfaceConfig?.bookmarks).toBeUndefined();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should set prompts and bookmarks to different values when specified differently in config', async () => {
|
||
|
|
const config = {
|
||
|
|
interface: {
|
||
|
|
prompts: true,
|
||
|
|
bookmarks: false,
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
const result = await AppService({ config });
|
||
|
|
|
||
|
|
expect(result).toEqual(
|
||
|
|
expect.objectContaining({
|
||
|
|
interfaceConfig: expect.objectContaining({
|
||
|
|
prompts: true,
|
||
|
|
bookmarks: false,
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should correctly configure peoplePicker permissions including roles', async () => {
|
||
|
|
const config = {
|
||
|
|
interface: {
|
||
|
|
peoplePicker: {
|
||
|
|
users: true,
|
||
|
|
groups: true,
|
||
|
|
roles: true,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
const result = await AppService({ config });
|
||
|
|
|
||
|
|
expect(result).toEqual(
|
||
|
|
expect.objectContaining({
|
||
|
|
interfaceConfig: expect.objectContaining({
|
||
|
|
peoplePicker: expect.objectContaining({
|
||
|
|
users: true,
|
||
|
|
groups: true,
|
||
|
|
roles: true,
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should handle mixed peoplePicker permissions', async () => {
|
||
|
|
const config = {
|
||
|
|
interface: {
|
||
|
|
peoplePicker: {
|
||
|
|
users: true,
|
||
|
|
groups: false,
|
||
|
|
roles: true,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
const result = await AppService({ config });
|
||
|
|
|
||
|
|
expect(result).toEqual(
|
||
|
|
expect.objectContaining({
|
||
|
|
interfaceConfig: expect.objectContaining({
|
||
|
|
peoplePicker: expect.objectContaining({
|
||
|
|
users: true,
|
||
|
|
groups: false,
|
||
|
|
roles: true,
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should not set peoplePicker when not provided in config', async () => {
|
||
|
|
const config = {};
|
||
|
|
|
||
|
|
const result = await AppService({ config });
|
||
|
|
|
||
|
|
expect(result).toEqual(
|
||
|
|
expect.objectContaining({
|
||
|
|
interfaceConfig: expect.anything(),
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
|
||
|
|
// Verify that peoplePicker is undefined when not provided
|
||
|
|
expect(result.interfaceConfig?.peoplePicker).toBeUndefined();
|
||
|
|
});
|
||
|
|
});
|