Migrate unprocessed table to BLOBs
This commit is contained in:
parent
06aa2f6ce4
commit
4b6ef3a1ed
10 changed files with 492 additions and 253 deletions
159
ts/test-node/sql/migration_1280_test.ts
Normal file
159
ts/test-node/sql/migration_1280_test.ts
Normal file
|
@ -0,0 +1,159 @@
|
|||
// 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',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue