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.
80 lines
2.2 KiB
TypeScript
80 lines
2.2 KiB
TypeScript
import * as sinon from 'sinon';
|
|
import * as crypto from 'crypto';
|
|
import * as window from '../../window';
|
|
import * as DataShape from '../../../js/modules/data';
|
|
import { v4 as uuid } from 'uuid';
|
|
|
|
import { ImportMock } from 'ts-mock-imports';
|
|
import { PubKey } from '../../../ts/session/types';
|
|
import { ChatMessage, OpenGroupMessage } from '../../session/messages/outgoing';
|
|
|
|
const sandbox = sinon.createSandbox();
|
|
|
|
// We have to do this in a weird way because Data uses module.exports
|
|
// which doesn't play well with sinon or ImportMock
|
|
// tslint:disable-next-line: no-require-imports no-var-requires
|
|
const Data = require('../../../js/modules/data');
|
|
type DataFunction = typeof DataShape;
|
|
|
|
/**
|
|
* Stub a function inside Data.
|
|
*
|
|
* Note: This uses a custom sandbox.
|
|
* Please call `restoreStubs()` or `stub.restore()` to restore original functionality.
|
|
*/
|
|
export function stubData(fn: keyof DataFunction): sinon.SinonStub {
|
|
return sandbox.stub(Data, fn);
|
|
}
|
|
|
|
type WindowFunction = typeof window;
|
|
|
|
/**
|
|
* Stub a window object.
|
|
*
|
|
* Note: This uses a custom sandbox.
|
|
* Please call `restoreStubs()` or `stub.restore()` to restore original functionality.
|
|
*/
|
|
export function stubWindow<K extends keyof WindowFunction>(
|
|
fn: K,
|
|
replaceWith?: Partial<WindowFunction[K]>
|
|
) {
|
|
return ImportMock.mockOther(window, fn, replaceWith);
|
|
}
|
|
|
|
export function restoreStubs() {
|
|
ImportMock.restore();
|
|
sandbox.restore();
|
|
}
|
|
|
|
export function generateFakePubkey(): PubKey {
|
|
// Generates a mock pubkey for testing
|
|
const numBytes = PubKey.PUBKEY_LEN / 2 - 1;
|
|
const hexBuffer = crypto.randomBytes(numBytes).toString('hex');
|
|
const pubkeyString = `05${hexBuffer}`;
|
|
|
|
return new PubKey(pubkeyString);
|
|
}
|
|
|
|
export function generateChatMessage(): ChatMessage {
|
|
return new ChatMessage({
|
|
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
|
|
identifier: uuid(),
|
|
timestamp: Date.now(),
|
|
attachments: undefined,
|
|
quote: undefined,
|
|
expireTimer: undefined,
|
|
lokiProfile: undefined,
|
|
preview: undefined,
|
|
});
|
|
}
|
|
|
|
export function generateOpenGroupMessage(): OpenGroupMessage {
|
|
const group = new OpenGroup()
|
|
|
|
return new OpenGroupMessage({
|
|
group
|
|
attachments: undefined,
|
|
});
|
|
}
|
|
|