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.
42 lines
1.4 KiB
TypeScript
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']);
|
|
});
|
|
});
|