hoppscotch-backend-git/tests/dev-user-override.test.ts
tlemesle 4a084b989a Add DEV_USER_OVERRIDE gated by baked IS_COMPILED
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 15:57:51 +02:00

67 lines
2.3 KiB
TypeScript

import { describe, expect, test } from 'bun:test';
import { IS_COMPILED } from '../src/build-flags.ts';
import { parseDevUserOverride } from '../src/config.ts';
import { userFromDevOverride } from '../src/os-user.ts';
describe('DEV_USER_OVERRIDE', () => {
test('IS_COMPILED is false for uncompiled runs', () => {
expect(IS_COMPILED).toBe(false);
});
test('parses email & displayName and builds a user', async () => {
const override = parseDevUserOverride(
JSON.stringify({
email: 'dev@example.com',
displayName: 'Dev Override',
}),
{ isCompiled: false },
);
expect(override).toEqual({
email: 'dev@example.com',
displayName: 'Dev Override',
uid: null,
photoURL: null,
});
const user = await userFromDevOverride(override!);
expect(user.email).toBe('dev@example.com');
expect(user.displayName).toBe('Dev Override');
expect(user.uid).toMatch(
/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,
);
});
test('respects explicit uid', async () => {
const override = parseDevUserOverride(
JSON.stringify({
email: 'dev@example.com',
displayName: 'Dev Override',
uid: '11111111-2222-4333-8444-555555555555',
}),
{ isCompiled: false },
);
const user = await userFromDevOverride(override!);
expect(user.uid).toBe('11111111-2222-4333-8444-555555555555');
});
test('rejects override in compiled builds', () => {
expect(() => parseDevUserOverride(
JSON.stringify({
email: 'dev@example.com',
displayName: 'Dev Override',
}),
{ isCompiled: true },
)).toThrow(/not allowed in compiled builds/);
});
test('rejects invalid JSON', () => {
expect(() => parseDevUserOverride('{nope', { isCompiled: false }))
.toThrow(/must be valid JSON/);
});
test('empty string means no override', () => {
expect(parseDevUserOverride('', { isCompiled: false })).toBeNull();
expect(parseDevUserOverride(' ', { isCompiled: true })).toBeNull();
});
});