Skip to content

Commit 038bc68

Browse files
committed
mock unix domain socket test
This commit updates the only test that uses Unix Domain Sockets to connect to a mock Node.js server instead of a Redis container.
1 parent 2a36e1e commit 038bc68

File tree

3 files changed

+22
-15
lines changed

3 files changed

+22
-15
lines changed

API.md

-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ const server = new Hapi.Server({
8181
The test suite expects:
8282
- a redis server to be running on port 6379
8383
- a redis server listenning to port 6378 and requiring a password: 'secret'
84-
- a redis server listenning on socket `/tmp/redis.sock`
8584
- a redis cluster contains nodes running on ports 7000 to 7005
8685

8786
See [docker-compose.yml](./docker-compose.yml)

docker-compose.yml

-7
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,6 @@ services:
1313
ports:
1414
- 6378:6379
1515

16-
redis_with_uds:
17-
container_name: redis_with_uds
18-
image: redis:6-alpine
19-
command: redis-server --unixsocket /tmp/redis.sock
20-
volumes:
21-
- /tmp:/tmp
22-
2316
redis_cluster:
2417
container_name: redis_cluster
2518
image: grokzen/redis-cluster:5.0.5

test/index.js

+22-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
const Net = require('net');
4+
35
const Code = require('@hapi/code');
46
const Catbox = require('@hapi/catbox');
57
const CatboxRedis = require('..');
@@ -456,16 +458,29 @@ describe('Connection', { retry: true }, () => {
456458
expect(redis.client).to.exist();
457459
});
458460

459-
it('connects to a unix domain socket when one is provided', async () => {
461+
it('connects to a unix domain socket when one is provided', () => {
460462

461-
const options = {
462-
socket: '/tmp/redis.sock'
463-
};
463+
const socketPath = '/tmp/redis.sock';
464+
const promise = new Promise((resolve, reject) => {
464465

465-
const redis = new CatboxRedis(options);
466+
let connected = false;
467+
const server = new Net.createServer((socket) => {
466468

467-
await redis.start();
468-
expect(redis.client).to.exist();
469+
connected = true;
470+
socket.destroy();
471+
});
472+
473+
server.once('error', reject);
474+
server.listen(socketPath, async () => {
475+
476+
const redis = new CatboxRedis({ socket: socketPath });
477+
await expect(redis.start()).to.reject('Connection is closed.');
478+
expect(connected).to.equal(true);
479+
server.close(resolve);
480+
});
481+
});
482+
483+
return promise;
469484
});
470485

471486
it('connects via a Redis URL when one is provided', async () => {

0 commit comments

Comments
 (0)