38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
|
|
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
||
|
|
import { VpnClient } from '../ts/index.js';
|
||
|
|
import type { IVpnClientOptions } from '../ts/index.js';
|
||
|
|
|
||
|
|
let client: VpnClient;
|
||
|
|
|
||
|
|
tap.test('VpnClient: spawn daemon in stdio mode', async () => {
|
||
|
|
const options: IVpnClientOptions = {
|
||
|
|
transport: { transport: 'stdio' },
|
||
|
|
};
|
||
|
|
client = new VpnClient(options);
|
||
|
|
const started = await client.start();
|
||
|
|
expect(started).toBeTrue();
|
||
|
|
expect(client.running).toBeTrue();
|
||
|
|
});
|
||
|
|
|
||
|
|
tap.test('VpnClient: getStatus returns disconnected', async () => {
|
||
|
|
const status = await client.getStatus();
|
||
|
|
expect(status.state).toEqual('disconnected');
|
||
|
|
});
|
||
|
|
|
||
|
|
tap.test('VpnClient: getStatistics returns zeros', async () => {
|
||
|
|
const stats = await client.getStatistics();
|
||
|
|
expect(stats.bytesSent).toEqual(0);
|
||
|
|
expect(stats.bytesReceived).toEqual(0);
|
||
|
|
expect(stats.packetsSent).toEqual(0);
|
||
|
|
expect(stats.packetsReceived).toEqual(0);
|
||
|
|
});
|
||
|
|
|
||
|
|
tap.test('VpnClient: stop daemon', async () => {
|
||
|
|
client.stop();
|
||
|
|
// Give it a moment to clean up
|
||
|
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
||
|
|
expect(client.running).toBeFalse();
|
||
|
|
});
|
||
|
|
|
||
|
|
export default tap.start();
|