project-map.test.ts37 lines · main
1import { describe, expect, test } from 'bun:test';
2
3import {
4 AUTH_CORE_DEFAULT_APP_ID,
5 mapProjectToAuthCore,
6 projectIdToTenantId,
7 tenantIdToProjectId,
8} from './project-map.js';
9
10describe('briven-engine project map', () => {
11 test('maps project id to tenant', () => {
12 const m = mapProjectToAuthCore('p_abc123');
13 expect(m.appId).toBe(AUTH_CORE_DEFAULT_APP_ID);
14 // Core: letters, numbers, hyphens only
15 expect(m.tenantId).toBe('proj-p-abc123');
16 expect(m.projectId).toBe('p_abc123');
17 expect(m.phase).toBe(1);
18 });
19
20 test('sanitizes weird project ids', () => {
21 expect(projectIdToTenantId('My Project!')).toBe('proj-my-project');
22 });
23
24 test('tenant id has no underscores', () => {
25 expect(projectIdToTenantId('p_hello_world')).toBe('proj-p-hello-world');
26 expect(projectIdToTenantId('p_hello_world').includes('_')).toBe(false);
27 });
28
29 test('round-trips tenant → project (hyphen form)', () => {
30 const t = projectIdToTenantId('p_xyz');
31 expect(tenantIdToProjectId(t)).toBe('p-xyz');
32 });
33
34 test('rejects empty', () => {
35 expect(() => projectIdToTenantId(' ')).toThrow();
36 });
37});