From 457c0aa9b8cf48e024f2b1698fbd5c06a5fdbbd1 Mon Sep 17 00:00:00 2001 From: Maxim Schuwalow Date: Wed, 20 Sep 2023 18:57:11 +0200 Subject: [PATCH] cleanup old tests --- src/cache.ts | 16 +++--- src/enrichers/decisions.ts | 14 ++--- src/enrichers/domain.ts | 6 +- src/enrichers/live-connect-id.ts | 4 +- src/idex.ts | 6 +- src/standard-live-connect.ts | 2 +- src/utils/domain.ts | 2 +- test/unit/cache.spec.ts | 24 ++++---- test/unit/enricher/domain.spec.ts | 6 +- test/unit/enricher/live-connect-id.spec.ts | 6 +- test/unit/idex/identity-resolver.spec.ts | 65 +++++++++++----------- 11 files changed, 77 insertions(+), 74 deletions(-) diff --git a/src/cache.ts b/src/cache.ts index 3f29b806..793448d8 100644 --- a/src/cache.ts +++ b/src/cache.ts @@ -28,22 +28,22 @@ export interface DurableCache { export type StorageHandlerBackedCacheArgs = { storageHandler: WrappedStorageHandler, eventBus: EventBus, - domain: string, + cookieDomain: string, } export class StorageHandlerBackedCache implements DurableCache { private handler - private domain + private cookieDomain private eventBus constructor (opts: StorageHandlerBackedCacheArgs) { this.handler = opts.storageHandler - this.domain = opts.domain + this.cookieDomain = opts.cookieDomain this.eventBus = opts.eventBus } private deleteCookie(key: string): void { - this.handler.setCookie(key, '', new Date(0), 'Lax', this.domain) + this.handler.setCookie(key, '', new Date(0), 'Lax', this.cookieDomain) } // layout: { w: writtenAt in millis, e? : expiresAt in millis } @@ -161,8 +161,8 @@ export class StorageHandlerBackedCache implements DurableCache { return cookieRecord } else { // ls record is newer. Update cookie record - this.handler.setCookie(key, lsRecord.data, lsRecord.meta.expiresAt, 'Lax', this.domain) - this.handler.setCookie(metaRecordKey, this.serializeMetaRecord(lsRecord.meta), lsRecord.meta.expiresAt, 'Lax', this.domain) + this.handler.setCookie(key, lsRecord.data, lsRecord.meta.expiresAt, 'Lax', this.cookieDomain) + this.handler.setCookie(metaRecordKey, this.serializeMetaRecord(lsRecord.meta), lsRecord.meta.expiresAt, 'Lax', this.cookieDomain) return lsRecord } } else if (cookieRecord) { @@ -172,8 +172,8 @@ export class StorageHandlerBackedCache implements DurableCache { return cookieRecord } else if (lsRecord) { // only ls record exists. Write to cookie - this.handler.setCookie(key, lsRecord.data, lsRecord.meta.expiresAt, 'Lax', this.domain) - this.handler.setCookie(metaRecordKey, this.serializeMetaRecord(lsRecord.meta), lsRecord.meta.expiresAt, 'Lax', this.domain) + this.handler.setCookie(key, lsRecord.data, lsRecord.meta.expiresAt, 'Lax', this.cookieDomain) + this.handler.setCookie(metaRecordKey, this.serializeMetaRecord(lsRecord.meta), lsRecord.meta.expiresAt, 'Lax', this.cookieDomain) return lsRecord } else { return null diff --git a/src/enrichers/decisions.ts b/src/enrichers/decisions.ts index 7f0a5304..9c5318f6 100644 --- a/src/enrichers/decisions.ts +++ b/src/enrichers/decisions.ts @@ -3,7 +3,7 @@ import { getQueryParameter, ParsedParam } from '../utils/url' import { trim, isUUID, expiresInDays } from 'live-connect-common' import { WrappedStorageHandler } from '../handlers/storage-handler' -type Input = { pageUrl?: string, domain: string } +type Input = { pageUrl?: string, cookieDomain: string } type Output = { decisionIds: string[] } const DEFAULT_DECISION_ID_COOKIE_EXPIRES = expiresInDays(30) @@ -18,18 +18,18 @@ export function enrichDecisionIds( eventBus: EventBus ): Enricher { return state => { - function _addDecisionId(key: string, cookieDomain?: string) { + function addDecisionId(key: string) { if (key) { storageHandler.setCookie( `${DECISION_ID_COOKIE_NAMESPACE}${key}`, key, DEFAULT_DECISION_ID_COOKIE_EXPIRES, 'Lax', - cookieDomain) + state.cookieDomain) } } - function _orElseEmpty(errorDescription: string, f: () => A[]): A[] { + function orElseEmpty(errorDescription: string, f: () => A[]): A[] { try { return f() } catch (e) { @@ -38,7 +38,7 @@ export function enrichDecisionIds( } } - const freshDecisions = _orElseEmpty( + const freshDecisions = orElseEmpty( 'Error while extracting new decision ids', () => { const extractedFreshDecisions = ([] as ParsedParam[]).concat((state.pageUrl && getQueryParameter(state.pageUrl, DECISION_ID_QUERY_PARAM_NAME)) || []) @@ -50,7 +50,7 @@ export function enrichDecisionIds( } ) - const storedDecisions = _orElseEmpty( + const storedDecisions = orElseEmpty( 'Error while retrieving stored decision ids', () => { const extractedStoredDecisions = storageHandler.findSimilarCookies(DECISION_ID_COOKIE_NAMESPACE) @@ -63,7 +63,7 @@ export function enrichDecisionIds( freshDecisions.forEach(decision => { try { - _addDecisionId(decision, state.domain) + addDecisionId(decision) } catch (e) { eventBus.emitErrorWithMessage('DecisionsResolve', 'Error while storing new decision id', e) } diff --git a/src/enrichers/domain.ts b/src/enrichers/domain.ts index b1003ef6..6f7deb40 100644 --- a/src/enrichers/domain.ts +++ b/src/enrichers/domain.ts @@ -1,10 +1,10 @@ import { WrappedStorageHandler } from '../handlers/storage-handler' import { Enricher } from '../types' -import { determineHighestAccessibleDomain } from '../utils/domain' +import { determineHighestWritableDomain } from '../utils/domain' type Input = object -type Output = { domain: string } +type Output = { cookieDomain: string } export function enrichDomain(storageHandler: WrappedStorageHandler): Enricher { - return state => ({ ...state, domain: determineHighestAccessibleDomain(storageHandler) }) + return state => ({ ...state, cookieDomain: determineHighestWritableDomain(storageHandler) }) } diff --git a/src/enrichers/live-connect-id.ts b/src/enrichers/live-connect-id.ts index d8aff2ab..9a57ae9d 100644 --- a/src/enrichers/live-connect-id.ts +++ b/src/enrichers/live-connect-id.ts @@ -7,7 +7,7 @@ import { DurableCache } from '../cache' const NEXT_GEN_FP_NAME = '_lc2_fpi' -type Input = { domain: string } +type Input = { cookieDomain: string } type Output = { liveConnectId?: string, peopleVerifiedId?: string } export function enrichLiveConnectId( @@ -28,7 +28,7 @@ export function enrichLiveConnectId( cache.set(NEXT_GEN_FP_NAME, legacyValue) liveConnectIdentifier = legacyValue } else { - const newValue = `${domainHash(state.domain)}--${ulid()}`.toLocaleLowerCase() + const newValue = `${domainHash(state.cookieDomain)}--${ulid()}`.toLocaleLowerCase() // will also set cookie. It will also later be extended by cookie bouncing in the cff. cache.set(NEXT_GEN_FP_NAME, newValue) // handle case when all storage backends are disabled diff --git a/src/idex.ts b/src/idex.ts index b69cf985..68fa93d3 100644 --- a/src/idex.ts +++ b/src/idex.ts @@ -129,7 +129,7 @@ export class IdentityResolver { } } - unsafeResolve(successCallback: (result: unknown, meta: ResolutionMetadata) => void, errorCallback: () => void, additionalParams: ResolutionParams): void { + unsafeResolve(successCallback: (result: unknown, meta: ResolutionMetadata) => void, errorCallback: (e: unknown) => void, additionalParams: ResolutionParams): void { const cachedValue = this.getCached(additionalParams) if (cachedValue) { successCallback(...cachedValue) @@ -149,13 +149,13 @@ export class IdentityResolver { return `${this.url}/${this.source}/${this.publisherId}${params}` } - resolve(successCallback: (result: unknown, meta: ResolutionMetadata) => void, errorCallback?: () => void, additionalParams?: ResolutionParams): void { + resolve(successCallback: (result: unknown, meta: ResolutionMetadata) => void, errorCallback?: (e: unknown) => void, additionalParams?: ResolutionParams): void { try { this.unsafeResolve(successCallback, errorCallback || (() => {}), additionalParams || {}) } catch (e) { console.error('IdentityResolve', e) if (errorCallback && isFunction(errorCallback)) { - errorCallback() + errorCallback(e) } if (this.eventBus) { this.eventBus.emitError('IdentityResolve', e) diff --git a/src/standard-live-connect.ts b/src/standard-live-connect.ts index 442b7f54..1d05531f 100644 --- a/src/standard-live-connect.ts +++ b/src/standard-live-connect.ts @@ -114,7 +114,7 @@ function _standardInitialization(liveConnectConfig: LiveConnectConfig, externalS const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: stateWithDomain.domain + cookieDomain: stateWithDomain.cookieDomain }) const enrichedState = diff --git a/src/utils/domain.ts b/src/utils/domain.ts index 07f389dc..90727dfd 100644 --- a/src/utils/domain.ts +++ b/src/utils/domain.ts @@ -3,7 +3,7 @@ import { loadedDomain } from './page' const TLD_CACHE_KEY = '_li_dcdm_c' -export function determineHighestAccessibleDomain(storageHandler: WrappedStorageHandler): string { +export function determineHighestWritableDomain(storageHandler: WrappedStorageHandler): string { const cachedDomain = storageHandler.getCookie(TLD_CACHE_KEY) if (cachedDomain) { return cachedDomain diff --git a/test/unit/cache.spec.ts b/test/unit/cache.spec.ts index 9a5f5c46..a1c65b23 100644 --- a/test/unit/cache.spec.ts +++ b/test/unit/cache.spec.ts @@ -48,7 +48,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(1)) @@ -65,7 +65,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(1)) @@ -83,7 +83,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(1)) @@ -100,7 +100,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(1)) @@ -115,7 +115,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key_any', 'value_any', expiresInDays(1)) @@ -138,7 +138,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(-1)) @@ -151,7 +151,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(-1)) @@ -164,7 +164,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) const expires = expiresInDays(5) @@ -181,7 +181,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) const now = new Date() @@ -198,7 +198,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(5)) @@ -219,7 +219,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(5)) @@ -236,7 +236,7 @@ describe('Cache', () => { const cache = new StorageHandlerBackedCache({ storageHandler, eventBus, - domain: 'example.com' + cookieDomain: 'example.com' }) cache.set('key', 'value', expiresInDays(5)) diff --git a/test/unit/enricher/domain.spec.ts b/test/unit/enricher/domain.spec.ts index 6fdef330..7f89da22 100644 --- a/test/unit/enricher/domain.spec.ts +++ b/test/unit/enricher/domain.spec.ts @@ -20,13 +20,13 @@ describe('TLD checker', () => { it('should determine correct tld', () => { const resolved = enrichDomain(storageHandler)(input) - expect(resolved.domain).to.eq('.example.com') + expect(resolved.cookieDomain).to.eq('.example.com') }) it('should reuse the cached correct tld', () => { storageHandler.setCookie('_li_dcdm_c', '.example.com') const resolved = enrichDomain(storageHandler)(input) - expect(resolved.domain).to.eq('.example.com') + expect(resolved.cookieDomain).to.eq('.example.com') }) }) @@ -37,6 +37,6 @@ describe('TLD on sub-domain', () => { it('should use the full domain', () => { const resolved = enrichDomain(storageHandler)(input) - expect(resolved.domain).to.eq('.example.co.uk') + expect(resolved.cookieDomain).to.eq('.example.co.uk') }) }) diff --git a/test/unit/enricher/live-connect-id.spec.ts b/test/unit/enricher/live-connect-id.spec.ts index 8f771678..b011c9eb 100644 --- a/test/unit/enricher/live-connect-id.spec.ts +++ b/test/unit/enricher/live-connect-id.spec.ts @@ -13,12 +13,12 @@ import { expiresInHours } from 'live-connect-common' use(dirtyChai) function makeDeps(strategy: StorageStrategy = StorageStrategies.cookie) { - const domain = '.example.com' + const cookieDomain = '.example.com' const eventBus = LocalEventBus() const storage = new DefaultStorageHandler(eventBus) const storageHandler = WrappedStorageHandler.make(strategy, storage, eventBus) - const cache = new StorageHandlerBackedCache({ storageHandler, domain, eventBus }) - return { storageHandler, cache, domain } + const cache = new StorageHandlerBackedCache({ storageHandler, cookieDomain, eventBus }) + return { storageHandler, cache, cookieDomain } } describe('LiveConnectIdEnricher', () => { diff --git a/test/unit/idex/identity-resolver.spec.ts b/test/unit/idex/identity-resolver.spec.ts index c28ab1f1..a1773a24 100644 --- a/test/unit/idex/identity-resolver.spec.ts +++ b/test/unit/idex/identity-resolver.spec.ts @@ -1,4 +1,3 @@ -// @ts-nocheck import jsdom from 'global-jsdom' import sinon from 'sinon' import { expect, use } from 'chai' @@ -15,17 +14,18 @@ use(dirtyChai) describe('IdentityResolver', () => { const sandbox = sinon.createSandbox() - let requestToComplete = null + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let requestToComplete: any = null const eventBus = LocalEventBus() const calls = new WrappedCallHandler(new DefaultCallHandler(), eventBus) const storage = new DefaultStorageHandler(eventBus) - let errors = [] + let errors: string[] = [] let callCount = 0 const storageHandler = WrappedStorageHandler.make('cookie', new DefaultStorageHandler(eventBus), eventBus) const cache = new StorageHandlerBackedCache({ eventBus, storageHandler, - domain: 'example.com' + cookieDomain: 'example.com' }) beforeEach(() => { @@ -33,9 +33,12 @@ describe('IdentityResolver', () => { url: 'http://www.something.example.com' }) - eventBus.on('li_errors', error => errors.push(error)) + eventBus.on('li_errors', error => errors.push(error as string)) + // @ts-ignore global.XDomainRequest = null + // @ts-ignore global.XMLHttpRequest = sinon.createSandbox().useFakeXMLHttpRequest() + // @ts-ignore global.XMLHttpRequest.onCreate = request => { requestToComplete = request callCount += 1 @@ -51,7 +54,7 @@ describe('IdentityResolver', () => { it('should invoke callback on success, store the result in a cookie', (done) => { const response = { id: 112233 } const identityResolver = IdentityResolver.make({}, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(callCount).to.be.eql(1) expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -72,11 +75,11 @@ describe('IdentityResolver', () => { const cache = new StorageHandlerBackedCache({ eventBus, storageHandler: failedStorage, - domain: 'example.com' + cookieDomain: 'example.com' }) const identityResolver = IdentityResolver.make({}, cache, calls, eventBus) let jsonResponse = null - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { jsonResponse = responseAsJson } identityResolver.resolve(successCallback) @@ -98,11 +101,11 @@ describe('IdentityResolver', () => { const cache = new StorageHandlerBackedCache({ eventBus, storageHandler: failedStorage, - domain: 'example.com' + cookieDomain: 'example.com' }) const identityResolver = IdentityResolver.make({}, cache, calls, eventBus) let jsonResponse = null - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { jsonResponse = responseAsJson } identityResolver.resolve(successCallback) @@ -120,7 +123,7 @@ describe('IdentityResolver', () => { it('should attach the duid', (done) => { const response = { id: 112233 } const identityResolver = IdentityResolver.make({ peopleVerifiedId: '987' }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/any?duid=987') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -133,7 +136,7 @@ describe('IdentityResolver', () => { it('should attach additional params', (done) => { const response = { id: 112233 } const identityResolver = IdentityResolver.make({ peopleVerifiedId: '987' }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/any?duid=987&key=value') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -146,7 +149,7 @@ describe('IdentityResolver', () => { it('should attach additional params with an array that should be serialized as repeated query', (done) => { const response = { id: 112233 } const identityResolver = IdentityResolver.make({ peopleVerifiedId: '987' }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/any?duid=987&qf=0.1&resolve=age&resolve=gender') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -159,7 +162,7 @@ describe('IdentityResolver', () => { it('should attach publisher id', (done) => { const response = { id: 112233 } const identityResolver = IdentityResolver.make({ peopleVerifiedId: '987', identityResolutionConfig: { publisherId: 123 } }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/123?duid=987&key=value') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -172,7 +175,7 @@ describe('IdentityResolver', () => { it('should attach the did', (done) => { const response = { id: 112233 } const identityResolver = IdentityResolver.make({ distributorId: 'did-01er' }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/any?did=did-01er') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -183,8 +186,8 @@ describe('IdentityResolver', () => { }) it('should not attach an empty tuple', (done) => { - const identityResolver = IdentityResolver.make({ peopleVerifiedId: null }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const identityResolver = IdentityResolver.make({ peopleVerifiedId: undefined }, cache, calls, eventBus) + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/any') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql({}) @@ -209,7 +212,7 @@ describe('IdentityResolver', () => { } ] }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/any?duid=987&pubcid=exexex&some-id=AnotherId') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -227,7 +230,7 @@ describe('IdentityResolver', () => { gdprConsent: 'gdprConsent', usPrivacyString: 'usPrivacyString' }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/any?us_privacy=usPrivacyString&gdpr=0&gdpr_consent=gdprConsent') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -245,7 +248,7 @@ describe('IdentityResolver', () => { gdprConsent: 'gdprConsent', usPrivacyString: 'usPrivacyString' }, cache, calls, eventBus) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(requestToComplete.url).to.eq('https://idx.liadm.com/idex/unknown/any?us_privacy=usPrivacyString&gdpr=1&n3pc=1&gdpr_consent=gdprConsent') expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -257,8 +260,8 @@ describe('IdentityResolver', () => { it('should return the default empty response and emit error if response is 500', (done) => { const identityResolver = IdentityResolver.make({}, cache, calls, eventBus) - const errorCallback = (error) => { - expect(error.message).to.match(/^Error during XHR call: 500, url/) + const errorCallback = (error: unknown) => { + expect((error as Error).message).to.match(/^Error during XHR call: 500, url/) done() } identityResolver.resolve(() => undefined, errorCallback) @@ -271,7 +274,7 @@ describe('IdentityResolver', () => { const identityResolver = IdentityResolver.make({}, cache, calls, eventBus) let jsonResponse = null - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { jsonResponse = responseAsJson } identityResolver.resolve(successCallback, () => undefined, { type: 'md5' }) @@ -307,7 +310,7 @@ describe('IdentityResolver', () => { calls, eventBus ) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(callCount).to.be.eql(1) expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -333,7 +336,7 @@ describe('IdentityResolver', () => { calls, eventBus ) - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(callCount).to.be.eql(1) expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -348,12 +351,12 @@ describe('IdentityResolver', () => { it('should prefer expires header from the server', (done) => { const response = { id: 112233 } - let recordedExpiresAt: Date + let recordedExpiresAt: Date | undefined const customCache = new StorageHandlerBackedCache({ - strategy: 'cookie', storageHandler, - domain: 'example.com' + eventBus, + cookieDomain: 'example.com' }) customCache.set = (key, value, expiresAt) => { recordedExpiresAt = expiresAt @@ -365,11 +368,11 @@ describe('IdentityResolver', () => { const expiresAt = new Date() expiresAt.setHours(expiresAt.getHours() + 12) - function epochSeconds(date) { + function epochSeconds(date: Date) { Math.floor(date.getTime() / 1000) } - const successCallback = (responseAsJson) => { + const successCallback = (responseAsJson: unknown) => { expect(callCount).to.be.eql(1) expect(errors).to.be.empty() expect(responseAsJson).to.be.eql(response) @@ -378,7 +381,7 @@ describe('IdentityResolver', () => { expect(callCount).to.be.eql(1) expect(storageHandler.getCookie('__li_idex_cache_e30')).to.be.eq(JSON.stringify(response)) - expect(epochSeconds(recordedExpiresAt)).to.be.eq(epochSeconds(expiresAt)) + expect(epochSeconds(recordedExpiresAt!)).to.be.eq(epochSeconds(expiresAt)) done() }