signal-desktop/ts/test-node/sql/migration_1280_test.ts
2025-01-21 13:42:14 -08:00

159 lines
3.5 KiB
TypeScript

// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { assert } from 'chai';
import { type WritableDB } from '../../sql/Interface';
import { SignalService as Proto } from '../../protobuf';
import { generateAci } from '../../types/ServiceId';
import { createDB, updateToVersion, insertData, getTableData } from './helpers';
describe('SQL/updateToSchemaVersion1280', () => {
let db: WritableDB;
const OUR_ACI = generateAci();
const THEIR_ACI = generateAci();
afterEach(() => {
db.close();
});
beforeEach(() => {
db = createDB();
updateToVersion(db, 1270);
insertData(db, 'items', [
{
id: 'uuid_id',
json: {
id: 'uuid_id',
value: `${OUR_ACI}.2`,
},
},
]);
});
it('drops v1 envelopes', () => {
insertData(db, 'unprocessed', [
{
id: 'old',
},
]);
updateToVersion(db, 1280);
assert.deepStrictEqual(getTableData(db, 'unprocessed'), []);
});
it('does not drop v2 envelopes', () => {
insertData(db, 'unprocessed', [
{
id: 'new',
version: 2,
receivedAtCounter: 1,
story: 1,
urgent: 1,
timestamp: 4,
attempts: 5,
envelope: Buffer.from(
Proto.Envelope.encode({
destinationServiceId: THEIR_ACI,
content: Buffer.from('encrypted1'),
reportingToken: Buffer.from('token'),
}).finish()
).toString('base64'),
serverTimestamp: 6,
serverGuid: 'guid1',
},
{
id: 'new-2',
version: 2,
receivedAtCounter: 2,
story: 1,
urgent: 1,
timestamp: 4,
attempts: 5,
envelope: Buffer.from(
Proto.Envelope.encode({
type: 3,
content: Buffer.from('encrypted2'),
}).finish()
).toString('base64'),
serverTimestamp: 7,
serverGuid: 'guid2',
},
{
id: 'new-3',
version: 2,
receivedAtCounter: 3,
story: 0,
urgent: 0,
timestamp: 5,
attempts: 6,
envelope: Buffer.from(
Proto.Envelope.encode({
content: Buffer.from('unused'),
}).finish()
).toString('base64'),
decrypted: 'CAFE',
serverTimestamp: 8,
serverGuid: 'guid3',
},
]);
updateToVersion(db, 1280);
assert.deepStrictEqual(getTableData(db, 'unprocessed'), [
{
id: 'new',
type: 0,
receivedAtCounter: 1,
story: 1,
urgent: 1,
messageAgeSec: 0,
timestamp: 4,
attempts: 5,
destinationServiceId: THEIR_ACI,
content: '656e6372797074656431',
isEncrypted: 1,
serverTimestamp: 6,
serverGuid: 'guid1',
reportingToken: '746f6b656e',
},
{
id: 'new-2',
receivedAtCounter: 2,
story: 1,
urgent: 1,
timestamp: 4,
messageAgeSec: 0,
attempts: 5,
destinationServiceId: OUR_ACI,
content: '656e6372797074656432',
isEncrypted: 1,
type: 3,
serverTimestamp: 7,
serverGuid: 'guid2',
},
{
id: 'new-3',
receivedAtCounter: 3,
urgent: 0,
story: 0,
timestamp: 5,
messageAgeSec: 0,
attempts: 6,
destinationServiceId: OUR_ACI,
content: '080144',
isEncrypted: 0,
type: 0,
serverTimestamp: 8,
serverGuid: 'guid3',
},
]);
});
});