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.
		
		
		
		
		
			
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			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);
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |