Merge branch 'gorup-tests' into utils-tests

pull/1199/head
Vincent 5 years ago
commit 2d0409f9c8

@ -4,6 +4,7 @@ import { getAllConversations } from '../../../js/modules/data';
import { ContentMessage, SyncMessage } from '../messages/outgoing';
import { MultiDeviceProtocol } from '../protocols';
import ByteBuffer from 'bytebuffer';
import { TestUtils } from '../../test/test-utils';
export function toSyncMessage(
message: ContentMessage

@ -82,7 +82,8 @@ describe('String Utils', () => {
});
it('can encode huge string', async () => {
const testString = Array(Math.pow(2, 16))
const stringSize = Math.pow(2, 16);
const testString = Array(stringSize)
.fill('0')
.join('');
@ -127,8 +128,100 @@ describe('String Utils', () => {
});
describe('decode', () => {
it('', async () => {
//
it('can decode empty buffer', async () => {
const buffer = new ByteBuffer(0);
const encodings = ['base64', 'hex', 'binary', 'utf8'] as Array<Encoding>;
// Each encoding should be valid
encodings.forEach(encoding => {
const decoded = StringUtils.decode(buffer, encoding);
expect(decoded).to.exist;
expect(typeof decoded === String.name.toLowerCase());
expect(decoded).to.have.length(0);
});
});
it('can decode huge buffer', async () => {
const bytes = Math.pow(2, 16);
const bufferString = Array(bytes)
.fill('A')
.join('');
const buffer = ByteBuffer.fromUTF8(bufferString);
const encodings = ['base64', 'hex', 'binary', 'utf8'] as Array<Encoding>;
// Each encoding should be valid
encodings.forEach(encoding => {
const decoded = StringUtils.decode(buffer, encoding);
expect(decoded).to.exist;
expect(typeof decoded === String.name.toLowerCase());
expect(decoded).to.have.length.greaterThan(0);
});
});
it('can decode from ByteBuffer', async () => {
const buffer = ByteBuffer.fromUTF8('AAAAAAAAAA');
const encodings = ['base64', 'hex', 'binary', 'utf8'] as Array<Encoding>;
// Each encoding should be valid
encodings.forEach(encoding => {
const decoded = StringUtils.decode(buffer, encoding);
expect(decoded).to.exist;
expect(typeof decoded === String.name.toLowerCase());
expect(decoded).to.have.length.greaterThan(0);
});
});
it('can decode from Buffer', async () => {
const arrayBuffer = new ArrayBuffer(10);
const buffer = Buffer.from(arrayBuffer);
buffer.writeUInt8(0, 0);
const encodings = ['base64', 'hex', 'binary', 'utf8'] as Array<Encoding>;
// Each encoding should be valid
encodings.forEach(encoding => {
const decoded = StringUtils.decode(buffer, encoding);
expect(decoded).to.exist;
expect(typeof decoded === String.name.toLowerCase());
expect(decoded).to.have.length.greaterThan(0);
});
});
it('can decode from ArrayBuffer', async () => {
const buffer = new ArrayBuffer(10);
const encodings = ['base64', 'hex', 'binary', 'utf8'] as Array<Encoding>;
// Each encoding should be valid
encodings.forEach(encoding => {
const decoded = StringUtils.decode(buffer, encoding);
expect(decoded).to.exist;
expect(typeof decoded === String.name.toLowerCase());
expect(decoded).to.have.length.greaterThan(0);
});
});
it('can decode from Uint8Array', async () => {
const buffer = new Uint8Array(10);
const encodings = ['base64', 'hex', 'binary', 'utf8'] as Array<Encoding>;
// Each encoding should be valid
encodings.forEach(encoding => {
const decoded = StringUtils.decode(buffer, encoding);
expect(decoded).to.exist;
expect(typeof decoded === String.name.toLowerCase());
expect(decoded).to.have.length.greaterThan(0);
});
});
});
});

@ -51,10 +51,10 @@ describe('Sync Message Utils', () => {
const numConversations = 20;
const primaryConversations = new Array(numConversations / 2)
.fill({})
.map(() => new TestUtils.MockConversation({ type: 'primary' }));
.map(() => new TestUtils.MockConversation({ type: TestUtils.MockConversationType.Primary }));
const secondaryConversations = new Array(numConversations / 2)
.fill({})
.map(() => new TestUtils.MockConversation({ type: 'secondary' }));
.map(() => new TestUtils.MockConversation({ type: TestUtils.MockConversationType.Secondary }));
const conversations = [...primaryConversations, ...secondaryConversations];
const sandbox = sinon.createSandbox();

@ -1 +0,0 @@
{"version":3,"file":"testUtils.js","sourceRoot":"","sources":["testUtils.ts"],"names":[],"mappings":"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"}

@ -5,7 +5,8 @@ import {
} from '../../../session/messages/outgoing';
import { v4 as uuid } from 'uuid';
import { OpenGroup } from '../../../session/types';
import { generateFakePubKey } from './pubkey';
import { generateFakePubKey, generateFakePubKeys } from './pubkey';
import { ConversationAttributes } from '../../../../js/models/conversation';
export function generateChatMessage(identifier?: string): ChatMessage {
return new ChatMessage({
@ -46,3 +47,67 @@ export function generateClosedGroupMessage(
chatMessage: generateChatMessage(),
});
}
interface MockConversationParams {
id?: string;
type: MockConversationType;
members?: Array<string>;
}
export enum MockConversationType {
Primary = 'primary',
Secondary = 'secondary',
Group = 'group',
}
export class MockConversation {
public id: string;
public type: MockConversationType;
public attributes: ConversationAttributes;
public isPrimary?: boolean;
constructor(params: MockConversationParams) {
const dayInSeconds = 86400;
this.type = params.type;
this.id = params.id ?? generateFakePubKey().key;
this.isPrimary = this.type === MockConversationType.Primary;
const members = this.type === MockConversationType.Group
? params.members ?? generateFakePubKeys(10).map(m => m.key)
: [];
this.attributes = {
members,
left: false,
expireTimer: dayInSeconds,
profileSharing: true,
mentionedUs: false,
unreadCount: 99,
isArchived: false,
active_at: Date.now(),
timestamp: Date.now(),
secondaryStatus: !this.isPrimary,
};
}
public isPrivate() {
return true;
}
public isOurLocalDevice() {
return false;
}
public isBlocked() {
return false;
}
public getPrimaryDevicePubKey() {
if (this.type === MockConversationType.Group) {
return undefined;
}
return this.isPrimary ? this.id : generateFakePubKey().key;
}
}

Loading…
Cancel
Save