More protobufjs migration
This commit is contained in:
parent
cf06e6638e
commit
ddbbe3a6b1
70 changed files with 3967 additions and 3369 deletions
76
ts/test-electron/MessageReceiver_test.ts
Normal file
76
ts/test-electron/MessageReceiver_test.ts
Normal file
|
@ -0,0 +1,76 @@
|
|||
// Copyright 2015-2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
/* eslint-disable
|
||||
class-methods-use-this,
|
||||
@typescript-eslint/no-empty-function
|
||||
*/
|
||||
|
||||
import { assert } from 'chai';
|
||||
import EventEmitter from 'events';
|
||||
import { connection as WebSocket } from 'websocket';
|
||||
|
||||
import MessageReceiver from '../textsecure/MessageReceiver';
|
||||
import { DecryptionErrorEvent } from '../textsecure/messageReceiverEvents';
|
||||
import { SignalService as Proto } from '../protobuf';
|
||||
import * as Crypto from '../Crypto';
|
||||
|
||||
// TODO: remove once we move away from ArrayBuffers
|
||||
const FIXMEU8 = Uint8Array;
|
||||
|
||||
describe('MessageReceiver', () => {
|
||||
class FakeSocket extends EventEmitter {
|
||||
public sendBytes(_: Uint8Array) {}
|
||||
|
||||
public close() {}
|
||||
}
|
||||
|
||||
const number = '+19999999999';
|
||||
const uuid = 'aaaaaaaa-bbbb-4ccc-9ddd-eeeeeeeeeeee';
|
||||
const deviceId = 1;
|
||||
const signalingKey = Crypto.getRandomBytes(32 + 20);
|
||||
|
||||
describe('connecting', () => {
|
||||
it('generates decryption-error event when it cannot decrypt', done => {
|
||||
const socket = new FakeSocket();
|
||||
|
||||
const messageReceiver = new MessageReceiver(
|
||||
'oldUsername.2',
|
||||
'username.2',
|
||||
'password',
|
||||
signalingKey,
|
||||
{
|
||||
serverTrustRoot: 'AAAAAAAA',
|
||||
socket: socket as WebSocket,
|
||||
}
|
||||
);
|
||||
|
||||
const body = Proto.Envelope.encode({
|
||||
type: Proto.Envelope.Type.CIPHERTEXT,
|
||||
source: number,
|
||||
sourceUuid: uuid,
|
||||
sourceDevice: deviceId,
|
||||
timestamp: Date.now(),
|
||||
content: new FIXMEU8(Crypto.getRandomBytes(200)),
|
||||
}).finish();
|
||||
|
||||
const message = Proto.WebSocketMessage.encode({
|
||||
type: Proto.WebSocketMessage.Type.REQUEST,
|
||||
request: { id: 1, verb: 'PUT', path: '/api/v1/message', body },
|
||||
}).finish();
|
||||
|
||||
socket.emit('message', {
|
||||
type: 'binary',
|
||||
binaryData: message,
|
||||
});
|
||||
|
||||
messageReceiver.addEventListener(
|
||||
'decryption-error',
|
||||
(error: DecryptionErrorEvent) => {
|
||||
assert.strictEqual(error.decryptionError.senderUuid, uuid);
|
||||
assert.strictEqual(error.decryptionError.senderDevice, deviceId);
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue