mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-24 04:10:15 +01:00
feat(db & e2e): Enhance DB Schemas/Controllers and Improve E2E Tests (#966)
* feat: add global teardown to remove test data and add registration/log-out to auth flow * refactor(models/Conversation): index user field and add JSDoc to deleteConvos * refactor: add user index to message schema and ensure user is saved to each Message * refactor: add user to each saveMessage call * fix: handle case where title is null in zod schema * feat(e2e): ensure messages are deleted on cleanUp * fix: set last convo for all endpoints on conversation update * fix: enable registration for CI env
This commit is contained in:
parent
fd70e21732
commit
6358383001
28 changed files with 229 additions and 72 deletions
43
e2e/setup/cleanupUser.ts
Normal file
43
e2e/setup/cleanupUser.ts
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
import connectDb from '@librechat/backend/lib/db/connectDb';
|
||||
import User from '@librechat/backend/models/User';
|
||||
import Session from '@librechat/backend/models/Session';
|
||||
import { deleteMessages } from '@librechat/backend/models/Message';
|
||||
import { deleteConvos } from '@librechat/backend/models/Conversation';
|
||||
type TUser = { email: string; password: string };
|
||||
|
||||
export default async function cleanupUser(user: TUser) {
|
||||
const { email } = user;
|
||||
try {
|
||||
console.log('🤖: global teardown has been started');
|
||||
const db = await connectDb();
|
||||
console.log('🤖: ✅ Connected to Database');
|
||||
|
||||
const { _id } = await User.findOne({ email }).lean();
|
||||
console.log('🤖: ✅ Found user in Database');
|
||||
|
||||
// Delete all conversations & associated messages
|
||||
const { deletedCount, messages } = await deleteConvos(_id, {});
|
||||
|
||||
if (messages.deletedCount > 0 || deletedCount > 0) {
|
||||
console.log(`🤖: ✅ Deleted ${deletedCount} convos & ${messages.deletedCount} messages`);
|
||||
}
|
||||
|
||||
// Ensure all user messages are deleted
|
||||
const { deletedCount: deletedMessages } = await deleteMessages({ user: _id });
|
||||
if (deletedMessages > 0) {
|
||||
console.log(`🤖: ✅ Deleted ${deletedMessages} remaining message(s)`);
|
||||
}
|
||||
|
||||
await Session.deleteAllUserSessions(_id);
|
||||
|
||||
await User.deleteMany({ email });
|
||||
|
||||
console.log('🤖: ✅ Deleted user from Database');
|
||||
|
||||
await db.connection.close();
|
||||
} catch (error) {
|
||||
console.error('Error:', error);
|
||||
}
|
||||
}
|
||||
|
||||
process.on('uncaughtException', (err) => console.error('Uncaught Exception:', err));
|
||||
Loading…
Add table
Add a link
Reference in a new issue