|
|
|
@ -5,6 +5,7 @@ import * as _ from 'lodash';
|
|
|
|
|
import { MessageUtils } from '../../../../session/utils';
|
|
|
|
|
import { TestUtils } from '../../../../test/test-utils';
|
|
|
|
|
import { PendingMessageCache } from '../../../../session/sending/PendingMessageCache';
|
|
|
|
|
import { SnodeNamespaces } from '../../../../session/apis/snode_api/namespaces';
|
|
|
|
|
|
|
|
|
|
// Equivalent to Data.StorageItem
|
|
|
|
|
interface StorageItem {
|
|
|
|
@ -55,9 +56,13 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
it('can add to cache', async () => {
|
|
|
|
|
const device = TestUtils.generateFakePubKey();
|
|
|
|
|
const message = TestUtils.generateVisibleMessage();
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(device, message);
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(
|
|
|
|
|
device,
|
|
|
|
|
message,
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await pendingMessageCacheStub.add(device, message);
|
|
|
|
|
await pendingMessageCacheStub.add(device, message, SnodeNamespaces.UserMessages);
|
|
|
|
|
|
|
|
|
|
// Verify that the message is in the cache
|
|
|
|
|
const finalCache = await pendingMessageCacheStub.getAllPending();
|
|
|
|
@ -71,12 +76,24 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
it('can add multiple messages belonging to the same user', async () => {
|
|
|
|
|
const device = TestUtils.generateFakePubKey();
|
|
|
|
|
|
|
|
|
|
await pendingMessageCacheStub.add(device, TestUtils.generateVisibleMessage());
|
|
|
|
|
await pendingMessageCacheStub.add(
|
|
|
|
|
device,
|
|
|
|
|
TestUtils.generateVisibleMessage(),
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
// We have to timeout here otherwise it's processed too fast and messages start having the same timestamp
|
|
|
|
|
await TestUtils.timeout(5);
|
|
|
|
|
await pendingMessageCacheStub.add(device, TestUtils.generateVisibleMessage());
|
|
|
|
|
await pendingMessageCacheStub.add(
|
|
|
|
|
device,
|
|
|
|
|
TestUtils.generateVisibleMessage(),
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
await TestUtils.timeout(5);
|
|
|
|
|
await pendingMessageCacheStub.add(device, TestUtils.generateVisibleMessage());
|
|
|
|
|
await pendingMessageCacheStub.add(
|
|
|
|
|
device,
|
|
|
|
|
TestUtils.generateVisibleMessage(),
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Verify that the message is in the cache
|
|
|
|
|
const finalCache = await pendingMessageCacheStub.getAllPending();
|
|
|
|
@ -87,9 +104,13 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
it('can remove from cache', async () => {
|
|
|
|
|
const device = TestUtils.generateFakePubKey();
|
|
|
|
|
const message = TestUtils.generateVisibleMessage();
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(device, message);
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(
|
|
|
|
|
device,
|
|
|
|
|
message,
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await pendingMessageCacheStub.add(device, message);
|
|
|
|
|
await pendingMessageCacheStub.add(device, message, SnodeNamespaces.UserMessages);
|
|
|
|
|
|
|
|
|
|
const initialCache = await pendingMessageCacheStub.getAllPending();
|
|
|
|
|
expect(initialCache).to.have.length(1);
|
|
|
|
@ -106,12 +127,24 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
it('should only remove messages with different identifier and device', async () => {
|
|
|
|
|
const device = TestUtils.generateFakePubKey();
|
|
|
|
|
const message = TestUtils.generateVisibleMessage();
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(device, message);
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(
|
|
|
|
|
device,
|
|
|
|
|
message,
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await pendingMessageCacheStub.add(device, message);
|
|
|
|
|
await pendingMessageCacheStub.add(device, message, SnodeNamespaces.UserMessages);
|
|
|
|
|
await TestUtils.timeout(5);
|
|
|
|
|
const one = await pendingMessageCacheStub.add(device, TestUtils.generateVisibleMessage());
|
|
|
|
|
const two = await pendingMessageCacheStub.add(TestUtils.generateFakePubKey(), message);
|
|
|
|
|
const one = await pendingMessageCacheStub.add(
|
|
|
|
|
device,
|
|
|
|
|
TestUtils.generateVisibleMessage(),
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
const two = await pendingMessageCacheStub.add(
|
|
|
|
|
TestUtils.generateFakePubKey(),
|
|
|
|
|
message,
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const initialCache = await pendingMessageCacheStub.getAllPending();
|
|
|
|
|
expect(initialCache).to.have.length(3);
|
|
|
|
@ -143,7 +176,7 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
for (const item of cacheItems) {
|
|
|
|
|
await pendingMessageCacheStub.add(item.device, item.message);
|
|
|
|
|
await pendingMessageCacheStub.add(item.device, item.message, SnodeNamespaces.UserMessages);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const cache = await pendingMessageCacheStub.getAllPending();
|
|
|
|
@ -171,7 +204,7 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
for (const item of cacheItems) {
|
|
|
|
|
await pendingMessageCacheStub.add(item.device, item.message);
|
|
|
|
|
await pendingMessageCacheStub.add(item.device, item.message, SnodeNamespaces.UserMessages);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const initialCache = await pendingMessageCacheStub.getAllPending();
|
|
|
|
@ -188,7 +221,11 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
it('can find nothing when empty', async () => {
|
|
|
|
|
const device = TestUtils.generateFakePubKey();
|
|
|
|
|
const message = TestUtils.generateVisibleMessage();
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(device, message);
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(
|
|
|
|
|
device,
|
|
|
|
|
message,
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const foundMessage = pendingMessageCacheStub.find(rawMessage);
|
|
|
|
|
expect(foundMessage, 'a message was found in empty cache').to.be.undefined;
|
|
|
|
@ -197,9 +234,13 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
it('can find message in cache', async () => {
|
|
|
|
|
const device = TestUtils.generateFakePubKey();
|
|
|
|
|
const message = TestUtils.generateVisibleMessage();
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(device, message);
|
|
|
|
|
const rawMessage = await MessageUtils.toRawMessage(
|
|
|
|
|
device,
|
|
|
|
|
message,
|
|
|
|
|
SnodeNamespaces.UserMessages
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await pendingMessageCacheStub.add(device, message);
|
|
|
|
|
await pendingMessageCacheStub.add(device, message, SnodeNamespaces.UserMessages);
|
|
|
|
|
|
|
|
|
|
const finalCache = await pendingMessageCacheStub.getAllPending();
|
|
|
|
|
expect(finalCache).to.have.length(1);
|
|
|
|
@ -226,7 +267,7 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
for (const item of cacheItems) {
|
|
|
|
|
await pendingMessageCacheStub.add(item.device, item.message);
|
|
|
|
|
await pendingMessageCacheStub.add(item.device, item.message, SnodeNamespaces.UserMessages);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const initialCache = await pendingMessageCacheStub.getAllPending();
|
|
|
|
@ -256,7 +297,7 @@ describe('PendingMessageCache', () => {
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
for (const item of cacheItems) {
|
|
|
|
|
await pendingMessageCacheStub.add(item.device, item.message);
|
|
|
|
|
await pendingMessageCacheStub.add(item.device, item.message, SnodeNamespaces.UserMessages);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const addedMessages = await pendingMessageCacheStub.getAllPending();
|
|
|
|
|