You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
overseerr/server/scripts/prepareTestDb.ts

70 lines
1.9 KiB

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';
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';
await otherUser.setPassword('test1234');
otherUser.permissions = 32;
otherUser.avatar = gravatarUrl('friend@seerr.dev', {
default: 'mm',
size: 200,
});
await userRepository.save(otherUser);
};
prepareDb();