You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/test/session/unit/receiving/ConfigurationMessage_test.ts

98 lines
3.5 KiB
TypeScript

import chai from 'chai';
import Sinon from 'sinon';
import chaiAsPromised from 'chai-as-promised';
import { SignalService } from '../../../../protobuf';
import { ConfigurationMessage } from '../../../../session/messages/outgoing/controlMessage/ConfigurationMessage';
import { UserUtils } from '../../../../session/utils';
import { TestUtils } from '../../../test-utils';
import * as cache from '../../../../receiver/cache';
import { EnvelopePlus } from '../../../../receiver/types';
import { ConfigMessageHandler } from '../../../../receiver/configMessage';
import { ConfigurationSync } from '../../../../session/utils/job_runners/jobs/ConfigurationSyncJob';
import { ReleasedFeatures } from '../../../../util/releaseFeature';
import { stubData } from '../../../test-utils/utils';
chai.use(chaiAsPromised as any);
chai.should();
const { expect } = chai;
describe('handleConfigurationMessageLegacy_receiving', () => {
let createOrUpdateStub: Sinon.SinonStub<any>;
let getItemByIdStub: Sinon.SinonStub<any>;
let sender: string;
let envelope: EnvelopePlus;
let config: ConfigurationMessage;
beforeEach(() => {
TestUtils.stubWindowFeatureFlags();
Sinon.stub(cache, 'removeFromCache').resolves();
sender = TestUtils.generateFakePubKey().key;
config = new ConfigurationMessage({
activeOpenGroups: [],
activeClosedGroups: [],
timestamp: Date.now(),
identifier: 'identifier',
displayName: 'displayName',
contacts: [],
});
Sinon.stub(ConfigurationSync, 'queueNewJobIfNeeded').resolves();
TestUtils.stubWindow('setSettingValue', () => undefined);
});
afterEach(() => {
Sinon.restore();
});
it('should not be processed if we do not have a pubkey', async () => {
TestUtils.stubWindowLog();
Sinon.stub(UserUtils, 'getOurPubKeyStrFromCache').resolves(undefined);
envelope = TestUtils.generateEnvelopePlus(sender);
const proto = config.contentProto();
createOrUpdateStub = stubData('createOrUpdateItem').resolves();
getItemByIdStub = stubData('getItemById').resolves();
const checkIsUserConfigFeatureReleasedStub = Sinon.stub(
ReleasedFeatures,
'checkIsUserConfigFeatureReleased'
).resolves(false);
await ConfigMessageHandler.handleConfigurationMessageLegacy(
envelope,
proto.configurationMessage as SignalService.ConfigurationMessage
);
expect(createOrUpdateStub.callCount).to.equal(0);
expect(getItemByIdStub.callCount).to.equal(0);
expect(checkIsUserConfigFeatureReleasedStub.callCount).to.be.eq(1); // should only have the one as part of the global legacy check, but none for the smaller handlers
});
describe('with ourNumber set', () => {
const ourNumber = TestUtils.generateFakePubKey().key;
beforeEach(() => {
Sinon.stub(UserUtils, 'getOurPubKeyStrFromCache').resolves(ourNumber);
});
it('should not be processed if the message is not coming from our number', async () => {
const proto = config.contentProto();
// sender !== ourNumber
envelope = TestUtils.generateEnvelopePlus(sender);
Sinon.stub(ReleasedFeatures, 'checkIsUserConfigFeatureReleased').resolves(false);
createOrUpdateStub = stubData('createOrUpdateItem').resolves();
getItemByIdStub = stubData('getItemById').resolves();
await ConfigMessageHandler.handleConfigurationMessageLegacy(
envelope,
proto.configurationMessage as SignalService.ConfigurationMessage
);
expect(createOrUpdateStub.callCount).to.equal(0);
expect(getItemByIdStub.callCount).to.equal(0);
});
});
});