diff --git a/js/modules/loki_snode_api.js b/js/modules/loki_snode_api.js index 6d04da9c8..b9d4ffa32 100644 --- a/js/modules/loki_snode_api.js +++ b/js/modules/loki_snode_api.js @@ -432,9 +432,7 @@ class LokiSnodeAPI { if (this.guardNodes.length < edKeys.length) { log.warn( - `LokiSnodeAPI::buildNewOnionPaths - could not find some guard nodes: ${ - this.guardNodes.length - }/${edKeys.length} left` + `LokiSnodeAPI::buildNewOnionPaths - could not find some guard nodes: ${this.guardNodes.length}/${edKeys.length} left` ); } } @@ -490,7 +488,10 @@ class LokiSnodeAPI { async buildNewOnionPaths() { // this function may be called concurrently make sure we only have one inflight - return primitives.allowOnlyOneAtATime('buildNewOnionPaths', this.buildNewOnionPathsWorker); + return primitives.allowOnlyOneAtATime( + 'buildNewOnionPaths', + this.buildNewOnionPathsWorker + ); } async getRandomSnodeAddress() { diff --git a/ts/receiver/receiver.ts b/ts/receiver/receiver.ts index 08ccdb3b5..4a4636bc7 100644 --- a/ts/receiver/receiver.ts +++ b/ts/receiver/receiver.ts @@ -651,8 +651,8 @@ export async function handleMessageEvent(event: any): Promise { return; } } else if (source !== ourNumber) { - // Ignore auth from our devices - conversationId = primarySource.key; + // Ignore auth from our devices + conversationId = primarySource.key; } // the conversation with the primary device of that source (can be the same as conversationOrigin) diff --git a/ts/session/utils/Messages.ts b/ts/session/utils/Messages.ts index f58f4c694..f2987fced 100644 --- a/ts/session/utils/Messages.ts +++ b/ts/session/utils/Messages.ts @@ -1,4 +1,4 @@ -import { RawMessage } from '../types/RawMessage'; +import { RawMessage } from '../types/'; import { ContentMessage } from '../messages/outgoing'; import { EncryptionType, PubKey } from '../types'; diff --git a/ts/test/session/utils/Messages_test.ts b/ts/test/session/utils/Messages_test.ts new file mode 100644 index 000000000..967ac08cd --- /dev/null +++ b/ts/test/session/utils/Messages_test.ts @@ -0,0 +1,57 @@ +import { expect } from 'chai'; +import * as sinon from 'sinon'; + +import { v4 as uuid } from 'uuid'; +import { timeout } from '../../test-utils'; +import { generateChatMessage, generateFakePubKey } from '../../test-utils/testUtils'; +import { toRawMessage } from '../../../session/utils/Messages'; +import { RawMessage } from '../../../session/types/'; +import { padPlainTextBuffer } from '../../../session/crypto/MessageEncrypter'; + +// tslint:disable-next-line: no-require-imports no-var-requires +const chaiAsPromised = require('chai-as-promised'); +chai.use(chaiAsPromised); + +const { assert } = chai; + +describe('Message Utils', () => { + + describe('toRawMessage', () => { + it('can convert to raw message', async () => { + const device = generateFakePubKey(); + const message = generateChatMessage(); + + const rawMessage = toRawMessage(device, message); + + expect(Object.keys(rawMessage)).to.have.length(6); + expect(rawMessage.identifier).to.exist; + expect(rawMessage.device).to.exist; + expect(rawMessage.encryption).to.exist; + expect(rawMessage.plainTextBuffer).to.exist; + expect(rawMessage.timestamp).to.exist; + expect(rawMessage.ttl).to.exist; + }); + + it('should generate valid plainTextBuffer', async () => { + const device = generateFakePubKey(); + const message = generateChatMessage(); + + const rawMessage = toRawMessage(device, message); + + const rawBuffer = rawMessage.plainTextBuffer; + const rawBufferJSON = JSON.stringify(rawBuffer); + const messageBufferJSON = JSON.stringify(message.plainTextBuffer); + + expect(rawBuffer instanceof Uint8Array).to.equal(true, 'raw message did not contain a plainTextBuffer'); + expect(rawBufferJSON).to.equal(messageBufferJSON, 'plainTextBuffer was not converted correctly'); + }); + + it('should maintain pubkey', async () => { + const device = generateFakePubKey(); + const message = generateChatMessage(); + + const rawMessage = + }); + + }); +});