106 lines
2.6 KiB
TypeScript
106 lines
2.6 KiB
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { assert } from 'chai';
|
|
|
|
import { parseRawSyncDataArray } from '../../../jobs/helpers/syncHelpers';
|
|
import { generateAci } from '../../../types/ServiceId';
|
|
|
|
const SERVICE_ID_1 = generateAci();
|
|
const SERVICE_ID_2 = generateAci();
|
|
|
|
describe('read and view sync helpers', () => {
|
|
describe('parseRawSyncDataArray', () => {
|
|
it('errors if not passed an array', () => {
|
|
[undefined, { timestamp: 123 }].forEach(input => {
|
|
assert.throws(() => parseRawSyncDataArray(input));
|
|
});
|
|
});
|
|
|
|
it('errors if passed an array with any invalid elements', () => {
|
|
const valid = {
|
|
messageId: '4a3ad1e1-61a7-464d-9982-f3e8eea81818',
|
|
senderAci: SERVICE_ID_2,
|
|
timestamp: 1234,
|
|
};
|
|
|
|
[undefined, {}, { messageId: -1, timestamp: 4567 }].forEach(invalid => {
|
|
assert.throws(() => parseRawSyncDataArray([valid, invalid]));
|
|
});
|
|
});
|
|
|
|
it('does nothing to an empty array', () => {
|
|
assert.deepEqual(parseRawSyncDataArray([]), []);
|
|
});
|
|
|
|
it('handles a valid array', () => {
|
|
assert.deepEqual(
|
|
parseRawSyncDataArray([
|
|
{
|
|
senderAci: SERVICE_ID_1,
|
|
timestamp: 1234,
|
|
},
|
|
{
|
|
messageId: '4a3ad1e1-61a7-464d-9982-f3e8eea81818',
|
|
senderE164: undefined,
|
|
senderAci: SERVICE_ID_2,
|
|
timestamp: 4567,
|
|
},
|
|
]),
|
|
[
|
|
{
|
|
messageId: undefined,
|
|
senderE164: undefined,
|
|
senderAci: SERVICE_ID_1,
|
|
timestamp: 1234,
|
|
},
|
|
{
|
|
messageId: '4a3ad1e1-61a7-464d-9982-f3e8eea81818',
|
|
senderE164: undefined,
|
|
senderAci: SERVICE_ID_2,
|
|
timestamp: 4567,
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
it('turns `null` into `undefined`', () => {
|
|
assert.deepEqual(
|
|
parseRawSyncDataArray([
|
|
{
|
|
messageId: null,
|
|
senderAci: SERVICE_ID_1,
|
|
timestamp: 1234,
|
|
},
|
|
]),
|
|
[
|
|
{
|
|
messageId: undefined,
|
|
senderE164: undefined,
|
|
senderAci: SERVICE_ID_1,
|
|
timestamp: 1234,
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
it('removes extra properties', () => {
|
|
assert.deepEqual(
|
|
parseRawSyncDataArray([
|
|
{
|
|
timestamp: 1234,
|
|
extra: true,
|
|
},
|
|
]),
|
|
[
|
|
{
|
|
messageId: undefined,
|
|
senderE164: undefined,
|
|
senderAci: undefined,
|
|
timestamp: 1234,
|
|
},
|
|
]
|
|
);
|
|
});
|
|
});
|
|
});
|