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/messages/DeviceLinkMessage_test.ts

134 lines
4.1 KiB
TypeScript

import { expect } from 'chai';
import { beforeEach } from 'mocha';
import {
DeviceLinkGrantMessage,
DeviceLinkRequestMessage,
} from '../../../session/messages/outgoing';
import { SignalService } from '../../../protobuf';
import { LokiProfile } from '../../../types/Message';
describe('DeviceLinkMessage', () => {
let linkRequestMessage: DeviceLinkRequestMessage;
let linkGrantMessage: DeviceLinkGrantMessage;
let lokiProfile: LokiProfile;
beforeEach(() => {
linkRequestMessage = new DeviceLinkRequestMessage({
timestamp: Date.now(),
primaryDevicePubKey: '111111',
secondaryDevicePubKey: '222222',
requestSignature: new Uint8Array([1, 2, 3, 4, 5, 6]),
});
lokiProfile = {
displayName: 'displayName',
avatarPointer: 'avatarPointer',
profileKey: new Uint8Array([1, 2, 3, 4]),
};
linkGrantMessage = new DeviceLinkGrantMessage({
timestamp: Date.now(),
primaryDevicePubKey: '111111',
secondaryDevicePubKey: '222222',
requestSignature: new Uint8Array([1, 2, 3, 4, 5, 6]),
grantSignature: new Uint8Array([6, 5, 4, 3, 2, 1]),
lokiProfile,
});
});
describe('content of a linkRequestMessage ', () => {
let decoded: any;
before(() => {
const plainText = linkRequestMessage.plainTextBuffer();
decoded = SignalService.Content.decode(plainText);
});
it('has a pairingAuthorisation.primaryDevicePubKey', () => {
expect(decoded.pairingAuthorisation).to.have.property(
'primaryDevicePubKey',
'111111'
);
});
it('has a pairingAuthorisation.secondaryDevicePubKey', () => {
expect(decoded.pairingAuthorisation).to.have.property(
'secondaryDevicePubKey',
'222222'
);
});
it('has a pairingAuthorisation.requestSignature', () => {
expect(decoded.pairingAuthorisation)
.to.have.property('requestSignature')
.to.deep.equal(new Uint8Array([1, 2, 3, 4, 5, 6]));
});
it('has no pairingAuthorisation.grantSignature', () => {
expect(decoded.pairingAuthorisation)
.to.have.property('grantSignature')
.to.have.lengthOf(0);
});
it('has no lokiProfile', () => {
expect(decoded).to.not.have.property('lokiProfile');
});
});
describe('content of a linkGrantMessage ', () => {
let decoded: any;
before(() => {
const plainText = linkGrantMessage.plainTextBuffer();
decoded = SignalService.Content.decode(plainText);
});
it('has a pairingAuthorisation.primaryDevicePubKey', () => {
expect(decoded.pairingAuthorisation).to.have.property(
'primaryDevicePubKey',
'111111'
);
});
it('has a pairingAuthorisation.secondaryDevicePubKey', () => {
expect(decoded.pairingAuthorisation).to.have.property(
'secondaryDevicePubKey',
'222222'
);
});
it('has a pairingAuthorisation.requestSignature', () => {
expect(decoded.pairingAuthorisation)
.to.have.property('requestSignature')
.to.deep.equal(new Uint8Array([1, 2, 3, 4, 5, 6]));
});
it('has a pairingAuthorisation.grantSignature', () => {
expect(decoded.pairingAuthorisation)
.to.have.property('grantSignature')
.to.deep.equal(new Uint8Array([6, 5, 4, 3, 2, 1]));
});
it('has a lokiProfile', () => {
expect(decoded.dataMessage)
.to.have.property('profileKey')
.to.be.deep.equal(lokiProfile.profileKey);
expect(decoded.dataMessage)
.to.have.property('profile')
.to.have.property('displayName')
.to.be.deep.equal('displayName');
expect(decoded.dataMessage)
.to.have.property('profile')
.to.have.property('avatar')
.to.be.deep.equal('avatarPointer');
});
});
it('ttl of 2 minutes', () => {
expect(linkRequestMessage.ttl()).to.equal(2 * 60 * 1000);
expect(linkGrantMessage.ttl()).to.equal(2 * 60 * 1000);
});
it('has an identifier', () => {
expect(linkRequestMessage.identifier).to.not.equal(
null,
'identifier cannot be null'
);
expect(linkRequestMessage.identifier).to.not.equal(
undefined,
'identifier cannot be undefined'
);
});
});