Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Haze <hazeone@users.noreply.github.com> Co-authored-by: paisley <8197966+su8su@users.noreply.github.com> Co-authored-by: Felix <24791380+vcfgv@users.noreply.github.com>
79 lines
2.0 KiB
TypeScript
79 lines
2.0 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
const originalPlatform = process.platform;
|
|
|
|
const { mockExec } = vi.hoisted(() => ({
|
|
mockExec: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('child_process', () => ({
|
|
exec: mockExec,
|
|
default: {
|
|
exec: mockExec,
|
|
},
|
|
}));
|
|
|
|
vi.mock('@electron/utils/agent-config', () => ({
|
|
assignChannelToAgent: vi.fn(),
|
|
clearChannelBinding: vi.fn(),
|
|
createAgent: vi.fn(),
|
|
deleteAgentConfig: vi.fn(),
|
|
listAgentsSnapshot: vi.fn(),
|
|
removeAgentWorkspaceDirectory: vi.fn(),
|
|
resolveAccountIdForAgent: vi.fn(),
|
|
updateAgentName: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('@electron/utils/channel-config', () => ({
|
|
deleteChannelAccountConfig: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('@electron/services/providers/provider-runtime-sync', () => ({
|
|
syncAllProviderAuthToRuntime: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('@electron/api/route-utils', () => ({
|
|
parseJsonBody: vi.fn(),
|
|
sendJson: vi.fn(),
|
|
}));
|
|
|
|
function setPlatform(platform: string): void {
|
|
Object.defineProperty(process, 'platform', { value: platform, writable: true });
|
|
}
|
|
|
|
describe('restartGatewayForAgentDeletion', () => {
|
|
beforeEach(() => {
|
|
vi.resetAllMocks();
|
|
vi.resetModules();
|
|
mockExec.mockImplementation((_cmd: string, _opts: object, cb: (err: Error | null, stdout: string) => void) => {
|
|
cb(null, '');
|
|
return {} as never;
|
|
});
|
|
});
|
|
|
|
afterEach(() => {
|
|
Object.defineProperty(process, 'platform', { value: originalPlatform, writable: true });
|
|
});
|
|
|
|
it('uses taskkill tree strategy on Windows when gateway pid is known', async () => {
|
|
setPlatform('win32');
|
|
const { restartGatewayForAgentDeletion } = await import('@electron/api/routes/agents');
|
|
|
|
const restart = vi.fn().mockResolvedValue(undefined);
|
|
const getStatus = vi.fn(() => ({ pid: 4321, port: 18789 }));
|
|
|
|
await restartGatewayForAgentDeletion({
|
|
gatewayManager: {
|
|
getStatus,
|
|
restart,
|
|
},
|
|
} as never);
|
|
|
|
expect(mockExec).toHaveBeenCalledWith(
|
|
'taskkill /F /PID 4321 /T',
|
|
expect.any(Function),
|
|
);
|
|
expect(restart).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|