tutanota/test/api/TestUtils.js

64 lines
2.3 KiB
JavaScript
Raw Normal View History

2017-08-15 13:54:22 +02:00
// @flow
2019-09-13 13:49:11 +02:00
import o from "ospec"
import type {BrowserData} from "../../src/misc/ClientConstants"
import type {Db} from "../../src/api/worker/search/SearchTypes"
import {IndexerCore} from "../../src/api/worker/search/IndexerCore"
import {EventQueue} from "../../src/api/worker/search/EventQueue"
import {DbTransaction} from "../../src/api/worker/search/DbFacade"
import {assertNotNull, neverNull} from "@tutao/tutanota-utils"
import type {DesktopDeviceKeyProvider} from "../../src/desktop/DeviceKeyProviderImpl"
import {mock} from "@tutao/tutanota-test-utils"
2021-11-19 14:48:33 +01:00
import {aes256RandomKey, fixedIv, uint8ArrayToKey} from "@tutao/tutanota-crypto"
2019-04-12 16:16:17 +02:00
export const browserDataStub: BrowserData = {needsMicrotaskHack: false, needsExplicitIDBIds: false, indexedDbSupported: true}
export function makeCore(args?: {
db?: Db,
queue?: EventQueue,
browserData?: BrowserData,
transaction?: DbTransaction
}, mocker?: (any) => void): IndexerCore {
const safeArgs = args || {}
const {transaction = (null: any)} = safeArgs
const defaultDb = {
key: aes256RandomKey(),
iv: fixedIv,
2019-10-02 13:59:34 +02:00
dbFacade: ({createTransaction: () => Promise.resolve(transaction)}: any),
initialized: Promise.resolve()
}
const {db = defaultDb, queue = (null: any), browserData = browserDataStub} = safeArgs
const core = new IndexerCore(db, queue, browserData)
mocker && mock(core, mocker)
return core
}
2019-09-13 13:49:11 +02:00
export function preTest() {
browser(() => {
const p = document.createElement("p")
p.id = "report"
p.style.fontWeight = "bold"
p.style.fontSize = "30px"
p.style.fontFamily = "sans-serif"
p.textContent = "Running tests..."
neverNull(document.body).appendChild(p)
})()
}
export function reportTest(results: mixed, stats: mixed) {
const errCount = o.report(results, stats)
if (typeof process != "undefined" && errCount !== 0) process.exit(1) // eslint-disable-line no-process-exit
browser(() => {
const p = assertNotNull(document.getElementById("report"))
// errCount includes bailCount
p.textContent = errCount === 0 ? "No errors" : `${errCount} error(s) (see console)`
p.style.color = errCount === 0 ? "green" : "red"
})()
}
export function makeDeviceKeyProvider(uint8ArrayKey: Uint8Array): DesktopDeviceKeyProvider {
return {
getDeviceKey() {
return Promise.resolve(uint8ArrayToKey(uint8ArrayKey))
}
}
}