From 94f0fbb65ad8d7fcf36e3e3be88f5304e8a091dd Mon Sep 17 00:00:00 2001 From: Vincent Date: Tue, 16 Jun 2020 17:59:20 +1000 Subject: [PATCH] params-check --- .../outgoing/content/data/ChatMessage.ts | 5 ++-- ts/test/session/sending/MessageQueue_test.ts | 26 +++++++++++++------ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/ts/session/messages/outgoing/content/data/ChatMessage.ts b/ts/session/messages/outgoing/content/data/ChatMessage.ts index eaada5a5b..6c8bf4720 100644 --- a/ts/session/messages/outgoing/content/data/ChatMessage.ts +++ b/ts/session/messages/outgoing/content/data/ChatMessage.ts @@ -153,11 +153,10 @@ export class ChatMessage extends DataMessage { return dataMessage; } - public isEqual(comparator: ChatMessage) { + public isEqual(comparator: ChatMessage): boolean { return ( this.identifier === comparator.identifier && - this.timestamp === comparator.timestamp && - this.plainTextBuffer.prototype.isEqual(comparator.plainTextBuffer) + this.timestamp === comparator.timestamp ); } } diff --git a/ts/test/session/sending/MessageQueue_test.ts b/ts/test/session/sending/MessageQueue_test.ts index fc124f6a2..9c611b569 100644 --- a/ts/test/session/sending/MessageQueue_test.ts +++ b/ts/test/session/sending/MessageQueue_test.ts @@ -3,13 +3,14 @@ import Sinon, * as sinon from 'sinon'; import { GroupUtils } from '../../../session/utils'; import { Stubs, TestUtils } from '../../../test/test-utils'; import { MessageQueue } from '../../../session/sending/MessageQueue'; -import { OpenGroupMessage } from '../../../session/messages/outgoing'; +import { OpenGroupMessage, ChatMessage } from '../../../session/messages/outgoing'; import { PubKey, RawMessage } from '../../../session/types'; import { UserUtil } from '../../../util'; import { MessageSender } from '../../../session/sending'; import { toRawMessage } from '../../../session/utils/Messages'; import { SessionProtocol } from '../../../session/protocols'; import { PendingMessageCache } from '../../../session/sending/PendingMessageCache'; +import { generateChatMessage } from '../../test-utils/testUtils'; // Equivalent to Data.StorageItem interface StorageItem { @@ -22,6 +23,7 @@ describe('MessageQueue', () => { let data: StorageItem; const sandbox = sinon.createSandbox(); const ourNumber = TestUtils.generateFakePubkey().key; + const pairedDevices = TestUtils.generateMemberList(2).map(m => m.key); // Initialize new stubbed queue let messageQueueStub: MessageQueue; @@ -71,9 +73,7 @@ describe('MessageQueue', () => { // Utils Stubs sandbox.stub(UserUtil, 'getCurrentDevicePubKey').resolves(ourNumber); - TestUtils.stubData('getPairedDevicesFor').callsFake(async () => { - return TestUtils.generateMemberList(2); - }); + TestUtils.stubData('getPairedDevicesFor').resolves(pairedDevices); TestUtils.stubWindow('libsignal', { SignalProtocolAddress: sandbox.stub(), SessionCipher: Stubs.SessionCipherStub, @@ -170,15 +170,25 @@ describe('MessageQueue', () => { const message = TestUtils.generateChatMessage(); const promise = messageQueueStub.sendUsingMultiDevice(device, message); + expect(promise).to.be.fulfilled; // Ensure the arguments passed into sendMessageToDevices are correct await tick(); - const previousArgs = sendMessageToDevicesSpy.lastCall.args; + const previousArgs = sendMessageToDevicesSpy.lastCall.args as [Array, ChatMessage]; - // Need to check that instances of ChatMesasge are equal - expect(previousArgs).to.equal({}); + // Check that instances are equal + expect(previousArgs).to.have.length(2); - expect(promise).to.be.fulfilled; + const argsPairedDevices = previousArgs[0]; + const argsChatMessage = previousArgs[1]; + + expect(argsChatMessage instanceof ChatMessage).to.equal(true, 'message passed into sendMessageToDevices was not a valid ChatMessage'); + expect(argsChatMessage.isEqual(message)).to.equal(true, 'message passed into sendMessageToDevices has been mutated'); + + argsPairedDevices.forEach((argsPaired: PubKey, index: number) => { + expect(argsPaired instanceof PubKey).to.equal(true, 'a device passed into sendMessageToDevices was not a PubKey'); + expect(argsPaired.key).to.equal(pairedDevices[index]); + }); }); });