Files
arboretum/packages/vscode/test/config.test.ts
Johan LEROY d287c3c1d1
Some checks failed
CI / Build & test (Node 22) (push) Successful in 10m13s
CI / Pack & boot smoke (Node 22) (push) Has been cancelled
CI / No em/en dashes (push) Has been cancelled
CI / Build & test (Node 24) (push) Has been cancelled
feat: l'IDE devient la vue par défaut + deep-link worktree unifié
Route / redirige vers /ide ; le dashboard passe à /dashboard (nom inchangé). /workspace/:repoId/:wt rend désormais l'IDE (IdeShell) : au montage il décode la clé, active et déplie le worktree ciblé, ouvre ?file= le cas échéant. WorkspaceView et useWorkspaceLayout retirés.

encode/decodeWtKey déplacés dans @arboretum/shared (source unique) avec décodeur TOLÉRANT (base64url OU chemin percent-encodé), corrigeant la divergence historique du deep-link VS Code. config.ts de l'extension aligné sur encodeWtKey. Tests wt-key (shared) + config (vscode) mis à jour. 431 tests.
2026-07-17 17:28:48 +02:00

26 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, it } from 'vitest';
import { encodeWtKey, decodeWtKey } from '@arboretum/shared';
import { normalizeBaseUrl, workspaceUrl, wsUrlFromBase } from '../src/config.js';
describe('config', () => {
it('normalise la base URL (slash final, défaut)', () => {
expect(normalizeBaseUrl('http://127.0.0.1:7317/')).toBe('http://127.0.0.1:7317');
expect(normalizeBaseUrl(' http://host:8080// ')).toBe('http://host:8080');
expect(normalizeBaseUrl('')).toBe('http://127.0.0.1:7317');
});
it('dérive lURL WebSocket (/ws, http→ws, https→wss)', () => {
expect(wsUrlFromBase('http://127.0.0.1:7317')).toBe('ws://127.0.0.1:7317/ws');
expect(wsUrlFromBase('https://box.ts.net')).toBe('wss://box.ts.net/ws');
});
it('construit lURL de la vue IDE web (workspaceUrl : repoId par segment, worktree en base64url)', () => {
const url = workspaceUrl('http://127.0.0.1:7317', 'repo id', '/home/user/wt');
expect(url).toBe(`http://127.0.0.1:7317/workspace/repo%20id/${encodeWtKey('/home/user/wt')}`);
// le segment worktree est décodable par la source partagée (cohérence avec le front).
const seg = url.split('/').pop() as string;
expect(decodeWtKey(seg)).toBe('/home/user/wt');
expect(seg).not.toMatch(/[%+/=]/);
});
});