signal-desktop/ts/test-node/util/callDisposition_test.ts
2024-10-08 13:17:03 +10:00

80 lines
2.2 KiB
TypeScript

// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { assert } from 'chai';
import type { PeekInfo } from '@signalapp/ringrtc';
import { v4 as uuid } from 'uuid';
import {
getPeerIdFromConversation,
getCallIdFromEra,
getGroupCallMeta,
} from '../../util/callDisposition';
import {
getDefaultConversation,
getDefaultGroup,
} from '../../test-both/helpers/getDefaultConversation';
import { uuidToBytes } from '../../util/uuidToBytes';
const MOCK_ERA = 'abc';
const MOCK_CALL_ID = '16919744041952114874';
const MOCK_PEEK_INFO_BASE: PeekInfo = {
devices: [],
deviceCount: 0,
deviceCountIncludingPendingDevices: 0,
deviceCountExcludingPendingDevices: 0,
pendingUsers: [],
};
describe('utils/callDisposition', () => {
describe('getCallIdFromEra', () => {
it('returns callId from era', () => {
// just to ensure the mock is correct
assert.strictEqual(getCallIdFromEra(MOCK_ERA), MOCK_CALL_ID);
});
});
describe('getGroupCallMeta', () => {
it('returns null if missing eraId or creator', () => {
assert.isNull(getGroupCallMeta({ ...MOCK_PEEK_INFO_BASE }));
assert.isNull(
getGroupCallMeta({ ...MOCK_PEEK_INFO_BASE, eraId: MOCK_ERA })
);
assert.isNull(
getGroupCallMeta({
...MOCK_PEEK_INFO_BASE,
creator: Buffer.from(uuidToBytes(uuid())),
})
);
});
it('returns group call meta when all fields are provided', () => {
const id = uuid();
assert.deepStrictEqual(
getGroupCallMeta({
...MOCK_PEEK_INFO_BASE,
eraId: MOCK_ERA,
creator: Buffer.from(uuidToBytes(id)),
}),
{ callId: MOCK_CALL_ID, ringerId: id }
);
});
});
describe('getPeerIdFromConversation', () => {
it('returns serviceId for direct conversation', () => {
const conversation = getDefaultConversation();
assert.strictEqual(
getPeerIdFromConversation(conversation),
conversation.serviceId
);
});
it('returns groupId for group conversation', () => {
const conversation = getDefaultGroup();
assert.strictEqual(
getPeerIdFromConversation(conversation),
conversation.groupId
);
});
});
});