Files

43 lines
1.3 KiB
JavaScript

import assert from 'node:assert/strict';
import net from 'node:net';
import test from 'node:test';
import { checkLocalRedis } from './run-test-api.mjs';
function listenOnLoopback() {
const server = net.createServer();
return new Promise((resolve, reject) => {
server.once('error', reject);
server.listen(0, '127.0.0.1', () => resolve(server));
});
}
function closeServer(server) {
return new Promise((resolve, reject) => {
server.close((error) => (error ? reject(error) : resolve()));
});
}
test('Redis 不可达时给出外部服务提示并拒绝启动', async () => {
const server = await listenOnLoopback();
const address = server.address();
assert.ok(address && typeof address !== 'string');
await closeServer(server);
await assert.rejects(
checkLocalRedis({ host: '127.0.0.1', port: address.port, timeoutMs: 100 }),
/本机 Redis.*127\.0\.0\.1:6379.*启动后重试/,
);
});
test('Redis TCP 可达时预检通过', async (context) => {
const server = await listenOnLoopback();
context.after(() => closeServer(server));
const address = server.address();
assert.ok(address && typeof address !== 'string');
await assert.doesNotReject(() =>
checkLocalRedis({ host: '127.0.0.1', port: address.port, timeoutMs: 100 }),
);
});