test: started expireRequest

added tests for buildExpireRequest
pull/2971/head
William Grant 2 years ago
parent c4a9555ba8
commit f28bb66742

@ -205,14 +205,14 @@ async function expireOnNodes(
}
}
type ExpireMessageOnSnodeProps = {
export type ExpireMessageOnSnodeProps = {
messageHash: string;
expireTimer: number;
extend?: boolean;
shorten?: boolean;
};
async function buildExpireRequest(
export async function buildExpireRequest(
props: ExpireMessageOnSnodeProps
): Promise<UpdateExpiryOnNodeSubRequest | null> {
const { messageHash, expireTimer, extend, shorten } = props;

@ -0,0 +1,119 @@
import chai, { expect } from 'chai';
import Sinon from 'sinon';
import chaiAsPromised from 'chai-as-promised';
import { stubWindowLog } from '../../../test-utils/utils';
import {
ExpireMessageOnSnodeProps,
buildExpireRequest,
} from '../../../../session/apis/snode_api/expireRequest';
import { UpdateExpiryOnNodeSubRequest } from '../../../../session/apis/snode_api/SnodeRequestTypes';
import { UserUtils } from '../../../../session/utils';
import { isValidUnixTimestamp } from '../../../../session/utils/Timestamps';
import { GetNetworkTime } from '../../../../session/apis/snode_api/getNetworkTime';
chai.use(chaiAsPromised as any);
describe('Snode /expire request', () => {
stubWindowLog();
const getLatestTimestampOffset = 200000;
const ourNumber = '051234567890acbdef';
const ourUserEd25516Keypair = {
pubKey: '37e1631b002de498caf7c5c1712718bde7f257c6dadeed0c21abf5e939e6c309',
privKey:
'be1d11154ff9b6de77873f0b6b0bcc460000000000000000000000000000000037e1631b002de498caf7c5c1712718bde7f257c6dadeed0c21abf5e939e6c309',
};
beforeEach(() => {
Sinon.stub(GetNetworkTime, 'getLatestTimestampOffset').returns(getLatestTimestampOffset);
Sinon.stub(UserUtils, 'getOurPubKeyStrFromCache').returns(ourNumber);
Sinon.stub(UserUtils, 'getUserED25519KeyPair').resolves(ourUserEd25516Keypair);
});
afterEach(() => {
Sinon.restore();
});
describe('buildExpireRequest', () => {
const props: ExpireMessageOnSnodeProps = {
messageHash: 'messageHash',
expireTimer: 60,
};
it('builds a request with just the messageHash and expireTimer of 1 minute', async () => {
const request: UpdateExpiryOnNodeSubRequest | null = await buildExpireRequest(props);
window.log.debug(`WIP: [unit testing] signature ${request?.params.signature} `);
expect(request, 'should not return null').to.not.be.null;
expect(request, 'should not return undefined').to.not.be.undefined;
expect(request, "method should be 'expire'").to.have.property('method', 'expire');
expect(request?.params.pubkey, 'should have a matching pubkey').to.equal(ourNumber);
expect(request?.params.messages[0], 'messageHash should be in messages array').to.equal(
props.messageHash
);
expect(
request?.params.expiry && isValidUnixTimestamp(request?.params.expiry),
'expiry should be a valid unix timestamp'
).to.be.true;
expect(request?.params.extend, 'extend should be undefined').to.be.undefined;
expect(request?.params.shorten, 'shorten should be undefined').to.be.undefined;
expect(request?.params.signature, 'signature should not be empty').to.not.be.empty;
});
it('builds a request with extend enabled', async () => {
const request: UpdateExpiryOnNodeSubRequest | null = await buildExpireRequest({
...props,
extend: true,
});
window.log.debug(`WIP: [unit testing] signature ${request?.params.signature} `);
expect(request, 'should not return null').to.not.be.null;
expect(request, 'should not return undefined').to.not.be.undefined;
expect(request, "method should be 'expire'").to.have.property('method', 'expire');
expect(request?.params.pubkey, 'should have a matching pubkey').to.equal(ourNumber);
expect(request?.params.messages[0], 'messageHash should be in messages array').to.equal(
props.messageHash
);
expect(
request?.params.expiry && isValidUnixTimestamp(request?.params.expiry),
'expiry should be a valid unix timestamp'
).to.be.true;
expect(request?.params.extend, 'extend should be true').to.be.true;
expect(request?.params.shorten, 'shorten should be undefined').to.be.undefined;
expect(request?.params.signature, 'signature should not be empty').to.not.be.empty;
});
it('builds a request with shorten enabled', async () => {
const request: UpdateExpiryOnNodeSubRequest | null = await buildExpireRequest({
...props,
shorten: true,
});
window.log.debug(`WIP: [unit testing] signature ${request?.params.signature} `);
expect(request, 'should not return null').to.not.be.null;
expect(request, 'should not return undefined').to.not.be.undefined;
expect(request, "method should be 'expire'").to.have.property('method', 'expire');
expect(request?.params.pubkey, 'should have a matching pubkey').to.equal(ourNumber);
expect(request?.params.messages[0], 'messageHash should be in messages array').to.equal(
props.messageHash
);
expect(
request?.params.expiry && isValidUnixTimestamp(request?.params.expiry),
'expiry should be a valid unix timestamp'
).to.be.true;
expect(request?.params.extend, 'extend should be undefined').to.be.undefined;
expect(request?.params.shorten, 'shorten should be true').to.be.true;
expect(request?.params.signature, 'signature should not be empty').to.not.be.empty;
});
it('fails to build a request if extend and shorten are both enabled', async () => {
const request: UpdateExpiryOnNodeSubRequest | null = await buildExpireRequest({
...props,
extend: true,
shorten: true,
});
expect(request, 'should return null').to.be.null;
});
});
});
Loading…
Cancel
Save