From 36e114a662abb35d9ad1cedde1ba47df2c802cbc Mon Sep 17 00:00:00 2001 From: William Grant Date: Wed, 11 Oct 2023 15:36:34 +1100 Subject: [PATCH] test: throw when we want a defined result this fixings the typings with test when look for props on objects --- .../unit/disappearing/ExpireRequest_test.ts | 56 +++++++++++-------- .../disappearing/GetExpiriesRequest_test.ts | 24 +++++--- ts/test/test-utils/utils/stubbing.ts | 6 +- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/ts/test/session/unit/disappearing/ExpireRequest_test.ts b/ts/test/session/unit/disappearing/ExpireRequest_test.ts index b22964af7..63c0f373f 100644 --- a/ts/test/session/unit/disappearing/ExpireRequest_test.ts +++ b/ts/test/session/unit/disappearing/ExpireRequest_test.ts @@ -1,7 +1,7 @@ import chai, { expect } from 'chai'; -import Sinon from 'sinon'; import chaiAsPromised from 'chai-as-promised'; -import { generateFakeSnode } from '../../../test-utils/utils'; +import Sinon from 'sinon'; +import { UpdateExpiryOnNodeSubRequest } from '../../../../session/apis/snode_api/SnodeRequestTypes'; import { ExpireMessageOnSnodeProps, ExpireRequestResponseResults, @@ -10,10 +10,10 @@ import { verifyExpireMsgsResponseSignature, verifyExpireMsgsResponseSignatureProps, } from '../../../../session/apis/snode_api/expireRequest'; -import { UpdateExpiryOnNodeSubRequest } from '../../../../session/apis/snode_api/SnodeRequestTypes'; +import { GetNetworkTime } from '../../../../session/apis/snode_api/getNetworkTime'; import { UserUtils } from '../../../../session/utils'; import { isValidUnixTimestamp } from '../../../../session/utils/Timestamps'; -import { GetNetworkTime } from '../../../../session/apis/snode_api/getNetworkTime'; +import { generateFakeSnode } from '../../../test-utils/utils'; chai.use(chaiAsPromised as any); @@ -47,18 +47,22 @@ describe('ExpireRequest', () => { expect(request, 'should not return null').to.not.be.null; expect(request, 'should not return undefined').to.not.be.undefined; + if (!request) { + throw Error('nothing was returned when building the request'); + } + 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( + 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), + 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; + 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({ @@ -68,18 +72,22 @@ describe('ExpireRequest', () => { expect(request, 'should not return null').to.not.be.null; expect(request, 'should not return undefined').to.not.be.undefined; + if (!request) { + throw Error('nothing was returned when building the request'); + } + 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( + 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), + 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; + 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({ @@ -89,18 +97,22 @@ describe('ExpireRequest', () => { expect(request, 'should not return null').to.not.be.null; expect(request, 'should not return undefined').to.not.be.undefined; + if (!request) { + throw Error('nothing was returned when building the request'); + } + 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( + 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), + 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; + 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({ diff --git a/ts/test/session/unit/disappearing/GetExpiriesRequest_test.ts b/ts/test/session/unit/disappearing/GetExpiriesRequest_test.ts index 4805ef5df..0e5412922 100644 --- a/ts/test/session/unit/disappearing/GetExpiriesRequest_test.ts +++ b/ts/test/session/unit/disappearing/GetExpiriesRequest_test.ts @@ -1,22 +1,24 @@ import chai, { expect } from 'chai'; -import Sinon from 'sinon'; import chaiAsPromised from 'chai-as-promised'; -import { TypedStub, generateFakeSnode } from '../../../test-utils/utils'; +import Sinon from 'sinon'; import { GetExpiriesFromNodeSubRequest } 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'; import { GetExpiriesFromSnodeProps, GetExpiriesRequestResponseResults, buildGetExpiriesRequest, processGetExpiriesRequestResponse, } from '../../../../session/apis/snode_api/getExpiriesRequest'; +import { GetNetworkTime } from '../../../../session/apis/snode_api/getNetworkTime'; import { SnodeSignature } from '../../../../session/apis/snode_api/snodeSignatures'; +import { UserUtils } from '../../../../session/utils'; +import { isValidUnixTimestamp } from '../../../../session/utils/Timestamps'; +import { TypedStub, generateFakeSnode, stubWindowLog } from '../../../test-utils/utils'; chai.use(chaiAsPromised as any); describe('GetExpiriesRequest', () => { + stubWindowLog(); + const getLatestTimestampOffset = 200000; const ourNumber = '37e1631b002de498caf7c5c1712718bde7f257c6dadeed0c21abf5e939e6c309'; const ourUserEd25516Keypair = { @@ -50,16 +52,20 @@ describe('GetExpiriesRequest', () => { expect(request, 'should not return null').to.not.be.null; expect(request, 'should not return undefined').to.not.be.undefined; + if (!request) { + throw Error('nothing was returned when getting the expiries'); + } + expect(request, "method should be 'get_expiries'").to.have.property('method', 'get_expiries'); - expect(request?.params.pubkey, 'should have a matching pubkey').to.equal(ourNumber); - expect(request?.params.messages, 'messageHashes should match our input').to.deep.equal( + expect(request.params.pubkey, 'should have a matching pubkey').to.equal(ourNumber); + expect(request.params.messages, 'messageHashes should match our input').to.deep.equal( props.messageHashes ); expect( - request?.params.timestamp && isValidUnixTimestamp(request?.params.timestamp), + request.params.timestamp && isValidUnixTimestamp(request?.params.timestamp), 'the timestamp should be a valid unix timestamp' ).to.be.true; - expect(request?.params.signature, 'signature should not be empty').to.not.be.empty; + expect(request.params.signature, 'signature should not be empty').to.not.be.empty; }); it('fails to build a request if our pubkey is missing', async () => { // Modify the stub behavior for this test only we need to return an unsupported type to simulate a missing pubkey diff --git a/ts/test/test-utils/utils/stubbing.ts b/ts/test/test-utils/utils/stubbing.ts index c59a86f95..867e60e3e 100644 --- a/ts/test/test-utils/utils/stubbing.ts +++ b/ts/test/test-utils/utils/stubbing.ts @@ -1,12 +1,12 @@ /* eslint-disable func-names */ import { expect } from 'chai'; import Sinon from 'sinon'; +import { ConfigDumpData } from '../../../data/configDump/configDump'; import { Data } from '../../../data/data'; import { OpenGroupData } from '../../../data/opengroups'; -import { ConfigDumpData } from '../../../data/configDump/configDump'; -import * as utilWorker from '../../../webworker/workers/browser/util_worker_interface'; import * as libsessionWorker from '../../../webworker/workers/browser/libsession_worker_interface'; +import * as utilWorker from '../../../webworker/workers/browser/util_worker_interface'; const globalAny: any = global; @@ -84,7 +84,7 @@ export function stubWindow(fn: K, value: WindowValue) }; } -export const enableLogRedirect = true; +export const enableLogRedirect = false; export const stubWindowLog = () => { stubWindow('log', {