signal-desktop/ts/test-electron/backup/conversations_test.ts
2025-01-27 14:53:43 -05:00

69 lines
2.1 KiB
TypeScript

// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { assert } from 'chai';
import { getRandomBytes } from '../../Crypto';
import * as Bytes from '../../Bytes';
import { setupBasics, symmetricRoundtripHarness } from './helpers';
import { loadAllAndReinitializeRedux } from '../../services/allLoaders';
import { deriveGroupID, deriveGroupSecretParams } from '../../util/zkgroup';
import { DataWriter } from '../../sql/Client';
function getGroupTestInfo() {
const masterKey = getRandomBytes(32);
const secretParams = deriveGroupSecretParams(masterKey);
const groupId = Bytes.toBase64(deriveGroupID(secretParams));
return { masterKey: Bytes.toBase64(masterKey), secretParams, groupId };
}
describe('backup/conversations', () => {
beforeEach(async () => {
await DataWriter._removeAllMessages();
await DataWriter._removeAllConversations();
window.storage.reset();
await setupBasics();
await loadAllAndReinitializeRedux();
});
it('roundtrips block state on group conversations', async () => {
const blockedGroupInfo = getGroupTestInfo();
await window.ConversationController.getOrCreateAndWait(
blockedGroupInfo.groupId,
'group',
{
groupId: blockedGroupInfo.groupId,
groupVersion: 2,
masterKey: blockedGroupInfo.masterKey,
name: 'Rock Enthusiasts',
}
);
const unblockedGroupInfo = getGroupTestInfo();
await window.ConversationController.getOrCreateAndWait(
unblockedGroupInfo.groupId,
'group',
{
groupId: unblockedGroupInfo.groupId,
groupVersion: 2,
masterKey: unblockedGroupInfo.masterKey,
name: 'Rock Enthusiasts 2',
}
);
await window.storage.blocked.addBlockedGroup(blockedGroupInfo.groupId);
await symmetricRoundtripHarness([]);
const blockedGroupAfter = window.ConversationController.get(
blockedGroupInfo.groupId
);
assert.isTrue(blockedGroupAfter?.isBlocked());
const unblockedGroupAfter = window.ConversationController.get(
unblockedGroupInfo.groupId
);
assert.isFalse(unblockedGroupAfter?.isBlocked());
});
});