1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00
Files
node-redis/packages/client/lib/commands/HSET.spec.ts
Tom Graham 82f43d9a53 Fix issue with buffers in objects using hSet (#2139)
* Fix issue with buffers in objects using hSet

When using hSet with an object, any buffer values inside the object are converted to strings instead of left as buffers.
This fix specifically handles the special case of buffers, whilst casting everything else strings (to continue "gracefully" handling the case where the value not a valid type).

* Update HSET.ts

* Update HSET.spec.ts

Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
2022-05-26 09:56:10 -04:00

75 lines
2.3 KiB
TypeScript

import { strict as assert } from 'assert';
import { transformArguments } from './HSET';
import testUtils, { GLOBAL } from '../test-utils';
describe('HSET', () => {
describe('transformArguments', () => {
describe('field, value', () => {
it('string', () => {
assert.deepEqual(
transformArguments('key', 'field', 'value'),
['HSET', 'key', 'field', 'value']
);
});
it('number', () => {
assert.deepEqual(
transformArguments('key', 1, 2),
['HSET', 'key', '1', '2']
);
});
it('Buffer', () => {
assert.deepEqual(
transformArguments(Buffer.from('key'), Buffer.from('field'), Buffer.from('value')),
['HSET', Buffer.from('key'), Buffer.from('field'), Buffer.from('value')]
);
});
});
it('Map', () => {
assert.deepEqual(
transformArguments('key', new Map([['field', 'value']])),
['HSET', 'key', 'field', 'value']
);
});
it('Array', () => {
assert.deepEqual(
transformArguments('key', [['field', 'value']]),
['HSET', 'key', 'field', 'value']
);
});
describe('Object', () => {
it('string', () => {
assert.deepEqual(
transformArguments('key', { field: 'value' }),
['HSET', 'key', 'field', 'value']
);
});
it('Buffer', () => {
assert.deepEqual(
transformArguments('key', { field: Buffer.from('value') }),
['HSET', 'key', 'field', Buffer.from('value')]
);
});
});
});
testUtils.testWithClient('client.hSet', async client => {
assert.equal(
await client.hSet('key', 'field', 'value'),
1
);
}, GLOBAL.SERVERS.OPEN);
testUtils.testWithCluster('cluster.hSet', async cluster => {
assert.equal(
await cluster.hSet('key', { field: 'value' }),
1
);
}, GLOBAL.CLUSTERS.OPEN);
});