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.
134 lines
4.1 KiB
TypeScript
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'
|
|
);
|
|
});
|
|
});
|