import { UserType } from '@server/constants/user'; import dataSource, { getRepository } from '@server/datasource'; import { User } from '@server/entity/User'; import { copyFileSync } from 'fs'; import gravatarUrl from 'gravatar-url'; import path from 'path'; const prepareDb = async () => { // Copy over test settings.json copyFileSync( path.join(__dirname, '../../cypress/config/settings.cypress.json'), path.join(__dirname, '../../config/settings.json') ); // Connect to DB and seed test data const dbConnection = await dataSource.initialize(); if (process.env.PRESERVE_DB !== 'true') { await dbConnection.dropDatabase(); } // Run migrations in production if (process.env.WITH_MIGRATIONS === 'true') { await dbConnection.runMigrations(); } else { await dbConnection.synchronize(); } const userRepository = getRepository(User); const admin = await userRepository.findOne({ select: { id: true, plexId: true }, where: { id: 1 }, }); // Create the admin user const user = (await userRepository.findOne({ where: { email: 'admin@seerr.dev' }, })) ?? new User(); user.plexId = admin?.plexId ?? 1; user.plexToken = '1234'; user.plexUsername = 'admin'; user.username = 'admin'; user.email = 'admin@seerr.dev'; user.userType = UserType.PLEX; await user.setPassword('test1234'); user.permissions = 2; user.avatar = gravatarUrl('admin@seerr.dev', { default: 'mm', size: 200 }); await userRepository.save(user); // Create the other user const otherUser = (await userRepository.findOne({ where: { email: 'friend@seerr.dev' }, })) ?? new User(); otherUser.plexId = admin?.plexId ?? 1; otherUser.plexToken = '1234'; otherUser.plexUsername = 'friend'; otherUser.username = 'friend'; otherUser.email = 'friend@seerr.dev'; otherUser.userType = UserType.PLEX; await otherUser.setPassword('test1234'); otherUser.permissions = 32; otherUser.avatar = gravatarUrl('friend@seerr.dev', { default: 'mm', size: 200, }); await userRepository.save(otherUser); }; prepareDb();