mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-03-15 20:26:33 +01:00
🚦 fix: Add Rate Limiting to Conversation Duplicate Endpoint (#12218)
* fix: add rate limiting to conversation duplicate endpoint * chore: linter * fix: address review findings for conversation duplicate rate limiting * refactor: streamline test mocks for conversation routes - Consolidated mock implementations into a dedicated `convos-route-mocks.js` file to enhance maintainability and readability of test files. - Updated tests in `convos-duplicate-ratelimit.spec.js` and `convos.spec.js` to utilize the new mock structure, improving clarity and reducing redundancy. - Enhanced the `duplicateConversation` function to accept an optional title parameter for better flexibility in conversation duplication. * chore: rename files
This commit is contained in:
parent
fa9e1b228a
commit
ca79a03135
6 changed files with 252 additions and 113 deletions
92
api/server/routes/__test-utils__/convos-route-mocks.js
Normal file
92
api/server/routes/__test-utils__/convos-route-mocks.js
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
module.exports = {
|
||||
agents: () => ({ sleep: jest.fn() }),
|
||||
|
||||
api: (overrides = {}) => ({
|
||||
isEnabled: jest.fn(),
|
||||
createAxiosInstance: jest.fn(() => ({
|
||||
get: jest.fn(),
|
||||
post: jest.fn(),
|
||||
put: jest.fn(),
|
||||
delete: jest.fn(),
|
||||
})),
|
||||
logAxiosError: jest.fn(),
|
||||
...overrides,
|
||||
}),
|
||||
|
||||
dataSchemas: () => ({
|
||||
logger: {
|
||||
debug: jest.fn(),
|
||||
info: jest.fn(),
|
||||
warn: jest.fn(),
|
||||
error: jest.fn(),
|
||||
},
|
||||
createModels: jest.fn(() => ({
|
||||
User: {},
|
||||
Conversation: {},
|
||||
Message: {},
|
||||
SharedLink: {},
|
||||
})),
|
||||
}),
|
||||
|
||||
dataProvider: (overrides = {}) => ({
|
||||
CacheKeys: { GEN_TITLE: 'GEN_TITLE' },
|
||||
EModelEndpoint: {
|
||||
azureAssistants: 'azureAssistants',
|
||||
assistants: 'assistants',
|
||||
},
|
||||
...overrides,
|
||||
}),
|
||||
|
||||
conversationModel: () => ({
|
||||
getConvosByCursor: jest.fn(),
|
||||
getConvo: jest.fn(),
|
||||
deleteConvos: jest.fn(),
|
||||
saveConvo: jest.fn(),
|
||||
}),
|
||||
|
||||
toolCallModel: () => ({ deleteToolCalls: jest.fn() }),
|
||||
|
||||
sharedModels: () => ({
|
||||
deleteAllSharedLinks: jest.fn(),
|
||||
deleteConvoSharedLink: jest.fn(),
|
||||
}),
|
||||
|
||||
requireJwtAuth: () => (req, res, next) => next(),
|
||||
|
||||
middlewarePassthrough: () => ({
|
||||
createImportLimiters: jest.fn(() => ({
|
||||
importIpLimiter: (req, res, next) => next(),
|
||||
importUserLimiter: (req, res, next) => next(),
|
||||
})),
|
||||
createForkLimiters: jest.fn(() => ({
|
||||
forkIpLimiter: (req, res, next) => next(),
|
||||
forkUserLimiter: (req, res, next) => next(),
|
||||
})),
|
||||
configMiddleware: (req, res, next) => next(),
|
||||
validateConvoAccess: (req, res, next) => next(),
|
||||
}),
|
||||
|
||||
forkUtils: () => ({
|
||||
forkConversation: jest.fn(),
|
||||
duplicateConversation: jest.fn(),
|
||||
}),
|
||||
|
||||
importUtils: () => ({ importConversations: jest.fn() }),
|
||||
|
||||
logStores: () => jest.fn(),
|
||||
|
||||
multerSetup: () => ({
|
||||
storage: {},
|
||||
importFileFilter: jest.fn(),
|
||||
}),
|
||||
|
||||
multerLib: () =>
|
||||
jest.fn(() => ({
|
||||
single: jest.fn(() => (req, res, next) => {
|
||||
req.file = { path: '/tmp/test-file.json' };
|
||||
next();
|
||||
}),
|
||||
})),
|
||||
|
||||
assistantEndpoint: () => ({ initializeClient: jest.fn() }),
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue