fix: block group folder path escapes
This commit is contained in:
39
src/group-folder.test.ts
Normal file
39
src/group-folder.test.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import path from 'path';
|
||||
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { isValidGroupFolder, resolveGroupFolderPath, resolveGroupIpcPath } from './group-folder.js';
|
||||
|
||||
describe('group folder validation', () => {
|
||||
it('accepts normal group folder names', () => {
|
||||
expect(isValidGroupFolder('main')).toBe(true);
|
||||
expect(isValidGroupFolder('family-chat')).toBe(true);
|
||||
expect(isValidGroupFolder('Team_42')).toBe(true);
|
||||
});
|
||||
|
||||
it('rejects traversal and reserved names', () => {
|
||||
expect(isValidGroupFolder('../../etc')).toBe(false);
|
||||
expect(isValidGroupFolder('/tmp')).toBe(false);
|
||||
expect(isValidGroupFolder('global')).toBe(false);
|
||||
expect(isValidGroupFolder('')).toBe(false);
|
||||
});
|
||||
|
||||
it('resolves safe paths under groups directory', () => {
|
||||
const resolved = resolveGroupFolderPath('family-chat');
|
||||
expect(
|
||||
resolved.endsWith(`${path.sep}groups${path.sep}family-chat`),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('resolves safe paths under data ipc directory', () => {
|
||||
const resolved = resolveGroupIpcPath('family-chat');
|
||||
expect(
|
||||
resolved.endsWith(`${path.sep}data${path.sep}ipc${path.sep}family-chat`),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('throws for unsafe folder names', () => {
|
||||
expect(() => resolveGroupFolderPath('../../etc')).toThrow();
|
||||
expect(() => resolveGroupIpcPath('/tmp')).toThrow();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user