Files
AetherForge/server/web/src/help/remoteDirBrowser.test.ts
AetherForge 1551bd5dad feat: Emberwake, Crucible phases, Linux agent, musical dashboard, e2e
Emberwake spread/waterhole UI, campaign DB, spread handler, spread-kit web publisher, and SPREAD_TECHNIQUES doc. Crucible Phase A-C: expanded ops, port-forward matrix, remote dir browser, crucible help/tests.

Linux agent hardening: credential vault, persistence audit, firewall/defender deploy, SMB spread status, CPU stats, screenshots/crypt/file-ops split. Docker compose and agent/server images with e2e validation script and docs.

Musical dashboard: ambient music player, hover SFX, SoundContext/AmbientMusicContext, steampunk polish. Public builds API, dropper handler updates, SessionGate and fleet UX. README and PROBLEMS.md refresh.
2026-06-04 21:53:31 -07:00

42 lines
1.4 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
defaultBrowseRoot,
joinRemotePath,
parseListDirMessage,
pathBreadcrumbs,
} from './remoteDirBrowser';
describe('remoteDirBrowser helpers', () => {
it('parseListDirMessage reads agent JSON', () => {
const msg = JSON.stringify({
path: '/home/alice',
home_dir: '/home/alice',
platform: 'linux',
entries: [{ name: 'docs', is_dir: true, size: 0 }],
});
const parsed = parseListDirMessage(msg);
expect(parsed?.path).toBe('/home/alice');
expect(parsed?.entries).toHaveLength(1);
});
it('defaultBrowseRoot returns empty for agent home resolution', () => {
expect(defaultBrowseRoot('windows')).toBe('');
expect(defaultBrowseRoot('linux')).toBe('');
});
it('joinRemotePath handles unix parent', () => {
expect(joinRemotePath('/home/alice/docs', '..')).toBe('/home/alice');
expect(joinRemotePath('/home/alice/docs', 'file.txt')).toBe('/home/alice/docs/file.txt');
});
it('joinRemotePath handles windows parent', () => {
expect(joinRemotePath('C:\\Users\\alice', '..')).toBe('C:\\Users');
expect(joinRemotePath('C:\\Users\\alice', 'Desktop')).toBe('C:\\Users\\alice\\Desktop');
});
it('pathBreadcrumbs splits mixed separators', () => {
expect(pathBreadcrumbs('/var/log')).toEqual(['var', 'log']);
expect(pathBreadcrumbs('C:\\Users\\bob')).toEqual(['C:', 'Users', 'bob']);
});
});