32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { createDataplaneClient } from '../../src/server/dataplaneClient.js';
|
|
|
|
test('control uses the dataplane socket protocol', async () => {
|
|
const requests = [];
|
|
const send = async (socketPath, pathname, method) => {
|
|
requests.push(`${method} ${pathname} ${socketPath}`);
|
|
return {
|
|
running: pathname !== '/stop',
|
|
startedAt: 'now',
|
|
gatewayBackendVersion: '0.1.0',
|
|
singBoxVersion: '1.12.13',
|
|
};
|
|
};
|
|
|
|
const client = createDataplaneClient('/run/dataplane.sock', send);
|
|
const status = await client.refresh();
|
|
assert.equal(status.running, true);
|
|
assert.equal(status.gatewayBackendVersion, '0.1.0');
|
|
assert.equal(status.singBoxVersion, '1.12.13');
|
|
await client.apply();
|
|
await client.restart();
|
|
assert.equal((await client.stop()).running, false);
|
|
assert.deepEqual(requests, [
|
|
'GET /status /run/dataplane.sock',
|
|
'POST /apply /run/dataplane.sock',
|
|
'POST /restart /run/dataplane.sock',
|
|
'POST /stop /run/dataplane.sock',
|
|
]);
|
|
});
|