Merge pull request #2488 from Bilb/message-request-include-profile
Profile in messageRequestpull/2524/head
commit
3788f5a4d5
@ -0,0 +1,160 @@
|
|||||||
|
import { expect } from 'chai';
|
||||||
|
import { v4 } from 'uuid';
|
||||||
|
|
||||||
|
import { SignalService } from '../../../../protobuf';
|
||||||
|
import { Constants } from '../../../../session';
|
||||||
|
import { MessageRequestResponse } from '../../../../session/messages/outgoing/controlMessage/MessageRequestResponse';
|
||||||
|
// tslint:disable: no-unused-expression
|
||||||
|
|
||||||
|
// tslint:disable-next-line: max-func-body-length
|
||||||
|
describe('MessageRequestResponse', () => {
|
||||||
|
let message: MessageRequestResponse | undefined;
|
||||||
|
it('correct ttl', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(message.ttl()).to.equal(Constants.TTL_DEFAULT.TTL_MAX);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('has an identifier', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(message.identifier).to.not.equal(null, 'identifier cannot be null');
|
||||||
|
expect(message.identifier).to.not.equal(undefined, 'identifier cannot be undefined');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('has an identifier matching if given', () => {
|
||||||
|
const identifier = v4();
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
identifier,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(message.identifier).to.not.equal(identifier, 'identifier should match');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('isApproved is always true', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
});
|
||||||
|
const plainText = message.plainTextBuffer();
|
||||||
|
const decoded = SignalService.Content.decode(plainText);
|
||||||
|
expect(decoded.messageRequestResponse)
|
||||||
|
.to.have.property('isApproved')
|
||||||
|
.to.be.eq(true, 'isApproved is true');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can create response without lokiProfile', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
});
|
||||||
|
const plainText = message.plainTextBuffer();
|
||||||
|
const decoded = SignalService.Content.decode(plainText);
|
||||||
|
expect(decoded.messageRequestResponse)
|
||||||
|
.to.have.property('profile')
|
||||||
|
.to.be.eq(null, 'no profile field if no profile given');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can create response with display name only', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
lokiProfile: { displayName: 'Jane', profileKey: null },
|
||||||
|
});
|
||||||
|
const plainText = message.plainTextBuffer();
|
||||||
|
const decoded = SignalService.Content.decode(plainText);
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.displayName).to.be.deep.eq('Jane');
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.profilePicture).to.be.empty;
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey).to.be.empty;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('empty profileKey does not get included', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
lokiProfile: { displayName: 'Jane', profileKey: new Uint8Array(0) },
|
||||||
|
});
|
||||||
|
const plainText = message.plainTextBuffer();
|
||||||
|
const decoded = SignalService.Content.decode(plainText);
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.displayName).to.be.eq('Jane');
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.profilePicture).to.be.empty;
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey).to.be.empty;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can create response with display name and profileKey and profileImage', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
lokiProfile: {
|
||||||
|
displayName: 'Jane',
|
||||||
|
profileKey: new Uint8Array([1, 2, 3, 4, 5, 6]),
|
||||||
|
avatarPointer: 'https://somevalidurl.com',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const plainText = message.plainTextBuffer();
|
||||||
|
const decoded = SignalService.Content.decode(plainText);
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.displayName).to.be.deep.eq('Jane');
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey).to.be.not.empty;
|
||||||
|
|
||||||
|
if (!decoded.messageRequestResponse?.profileKey?.buffer) {
|
||||||
|
throw new Error('decoded.messageRequestResponse?.profileKey?.buffer should be set');
|
||||||
|
}
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.profilePicture).to.be.eq(
|
||||||
|
'https://somevalidurl.com'
|
||||||
|
);
|
||||||
|
// don't ask me why deep.eq ([1,2,3, ...]) gives nothing interesting but a 8192 buffer not matching
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey.length).to.be.eq(6);
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey[0]).to.be.eq(1);
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey[1]).to.be.eq(2);
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey[2]).to.be.eq(3);
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey[3]).to.be.eq(4);
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey[4]).to.be.eq(5);
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey[5]).to.be.eq(6);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('profileKey not included if profileUrl not set', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
lokiProfile: { displayName: 'Jane', profileKey: new Uint8Array([1, 2, 3, 4, 5, 6]) },
|
||||||
|
});
|
||||||
|
const plainText = message.plainTextBuffer();
|
||||||
|
const decoded = SignalService.Content.decode(plainText);
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.displayName).to.be.deep.eq('Jane');
|
||||||
|
|
||||||
|
if (!decoded.messageRequestResponse?.profileKey?.buffer) {
|
||||||
|
throw new Error('decoded.messageRequestResponse?.profileKey?.buffer should be set');
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.profilePicture).to.be.empty;
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey).to.be.empty;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('url not included if profileKey not set', () => {
|
||||||
|
message = new MessageRequestResponse({
|
||||||
|
timestamp: Date.now(),
|
||||||
|
lokiProfile: {
|
||||||
|
displayName: 'Jane',
|
||||||
|
profileKey: null,
|
||||||
|
avatarPointer: 'https://somevalidurl.com',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const plainText = message.plainTextBuffer();
|
||||||
|
const decoded = SignalService.Content.decode(plainText);
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.displayName).to.be.deep.eq('Jane');
|
||||||
|
|
||||||
|
if (!decoded.messageRequestResponse?.profileKey?.buffer) {
|
||||||
|
throw new Error('decoded.messageRequestResponse?.profileKey?.buffer should be set');
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.displayName).to.be.eq('Jane');
|
||||||
|
expect(decoded.messageRequestResponse?.profile?.profilePicture).to.be.empty;
|
||||||
|
expect(decoded.messageRequestResponse?.profileKey).to.be.empty;
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue