Files
actual/packages/sync-server/vitest.globalSetup.js
Matiss Janis Aboltins 0c95eb4838 Add ESM loader support and update sync-server modules (#6179)
* Add ESM loader support and update sync-server modules

* Update TypeScript configuration and fix bank file import filter in sync-server

* Remove deprecated loader and register files, update TypeScript configuration to use ES2021, and add a new script for automatically adding import extensions to JavaScript files.

* Update test script in package.json to include a custom loader and clean up import extensions script by removing unused 'stat' import.

* feat: Add warning for unresolved imports

Co-authored-by: matiss <matiss@mja.lv>

* [autofix.ci] apply automated fixes

* Remove unused 'import/extensions' rule from ESLint configuration

* Refactor import statements in sync-server

- Updated import path for migrations to remove file extension.
- Added ESLint directive to ignore import extension rule for reset-password script.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-12-06 03:23:44 +00:00

105 lines
2.9 KiB
JavaScript

import { getAccountDb } from './src/account-db';
import { run as runMigrations } from './src/migrations';
const GENERIC_ADMIN_ID = 'genericAdmin';
const GENERIC_USER_ID = 'genericUser';
const ADMIN_ROLE_ID = 'ADMIN';
const BASIC_ROLE_ID = 'BASIC';
const createUser = (userId, userName, role, owner = 0, enabled = 1) => {
const missingParams = [];
if (!userId) missingParams.push('userId');
if (!userName) missingParams.push('userName');
if (!role) missingParams.push('role');
if (missingParams.length > 0) {
throw new Error(`Missing required parameters: ${missingParams.join(', ')}`);
}
if (
typeof userId !== 'string' ||
typeof userName !== 'string' ||
typeof role !== 'string'
) {
throw new Error(
'Invalid parameter types. userId, userName, and role must be strings',
);
}
try {
getAccountDb().mutate(
'INSERT INTO users (id, user_name, display_name, enabled, owner, role) VALUES (?, ?, ?, ?, ?, ?)',
[userId, userName, userName, enabled, owner, role],
);
} catch (error) {
console.error(`Error creating user ${userName}:`, error);
throw error;
}
};
const setSessionUser = (userId, token = 'valid-token') => {
if (!userId) {
throw new Error('userId is required');
}
try {
const db = getAccountDb();
const session = db.first('SELECT token FROM sessions WHERE token = ?', [
token,
]);
if (!session) {
throw new Error(`Session not found for token: ${token}`);
}
db.mutate('UPDATE sessions SET user_id = ? WHERE token = ?', [
userId,
token,
]);
} catch (error) {
console.error(`Error updating session for user ${userId}:`, error);
throw error;
}
};
export async function setup() {
const NEVER_EXPIRES = -1; // or consider using a far future timestamp
await runMigrations();
createUser(GENERIC_ADMIN_ID, 'admin', ADMIN_ROLE_ID, 1);
// Insert a fake "valid-token" fixture that can be reused
const db = getAccountDb();
try {
await db.mutate('BEGIN TRANSACTION');
await db.mutate('DELETE FROM sessions');
await db.mutate(
'INSERT INTO sessions (token, expires_at, user_id) VALUES (?, ?, ?)',
['valid-token', NEVER_EXPIRES, 'genericAdmin'],
);
await db.mutate(
'INSERT INTO sessions (token, expires_at, user_id) VALUES (?, ?, ?)',
['valid-token-admin', NEVER_EXPIRES, 'genericAdmin'],
);
await db.mutate(
'INSERT INTO sessions (token, expires_at, user_id) VALUES (?, ?, ?)',
['valid-token-user', NEVER_EXPIRES, 'genericUser'],
);
await db.mutate('COMMIT');
} catch (error) {
await db.mutate('ROLLBACK');
throw new Error(`Failed to setup test sessions: ${error.message}`);
}
setSessionUser('genericAdmin');
setSessionUser('genericAdmin', 'valid-token-admin');
createUser(GENERIC_USER_ID, 'user', BASIC_ROLE_ID, 1);
}
export async function teardown() {
await runMigrations('down');
}