2023-06-29 18:26:45 +02:00
|
|
|
import o from "@tutao/otest"
|
2022-05-12 16:51:15 +02:00
|
|
|
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/common/error/RestErrorTest.js"
|
|
|
|
|
import "./api/common/error/TutanotaErrorTest.js"
|
|
|
|
|
import "./api/common/mail/CommonMailUtilsTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./api/common/utils/BirthdayUtilsTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/common/utils/CommonFormatterTest.js"
|
|
|
|
|
import "./api/common/utils/EntityUtilsTest.js"
|
|
|
|
|
import "./api/common/EntityFunctionsTest.js"
|
|
|
|
|
import "./api/common/utils/FileUtilsTest.js"
|
|
|
|
|
import "./api/common/utils/LoggerTest.js"
|
|
|
|
|
import "./api/common/utils/PlainTextSearchTest.js"
|
|
|
|
|
import "./api/main/EntropyCollectorTest.js"
|
|
|
|
|
import "./api/worker/CompressionTest.js"
|
|
|
|
|
import "./api/worker/EventBusClientTest.js"
|
|
|
|
|
import "./api/worker/EventBusEventCoordinatorTest.js"
|
|
|
|
|
import "./api/worker/SuspensionHandlerTest.js"
|
|
|
|
|
import "./api/worker/UrlifierTest.js"
|
2024-09-05 13:11:59 +02:00
|
|
|
import "./api/worker/crypto/AsymmetricCryptoFacadeTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./api/worker/crypto/CompatibilityTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/crypto/CryptoMapperTest.js"
|
|
|
|
|
import "./api/worker/crypto/CryptoFacadeTest.js"
|
2025-05-05 17:33:47 +02:00
|
|
|
import "./api/worker/crypto/CryptoWrapperTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/crypto/EntityAdapterTest.js"
|
|
|
|
|
import "./api/worker/crypto/ModelMapperTest.js"
|
|
|
|
|
import "./api/worker/crypto/ModelMapperTransformationsTest.js"
|
|
|
|
|
import "./api/worker/crypto/OwnerEncSessionKeysUpdateQueueTest.js"
|
|
|
|
|
import "./api/worker/crypto/TypeMapperTest.js"
|
|
|
|
|
import "./api/worker/facades/ApplicationTypesFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/BlobAccessTokenFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/BlobFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/CalendarFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/ConfigurationDbTest.js"
|
|
|
|
|
import "./api/worker/facades/ContactFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/GroupManagementFacadeTest.js"
|
2025-05-08 15:44:26 +02:00
|
|
|
import "./api/worker/facades/AdminKeyLoaderFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/IdentityKeyCreatorTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/facades/KeyAuthenticationFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/KeyCacheTest.js"
|
|
|
|
|
import "./api/worker/facades/KeyLoaderFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/KeyRotationFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/KyberFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/LoginFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/MailAddressFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/MailExportFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/MailExportTokenFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/MailFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/PQFacadeTest.js"
|
|
|
|
|
import "./api/worker/facades/PQMessageTest.js"
|
2025-06-05 17:07:31 +02:00
|
|
|
import "./api/worker/facades/PublicEncryptionKeyProviderTest.js"
|
|
|
|
|
import "./api/worker/facades/PublicIdentityKeyProviderTest.js"
|
|
|
|
|
import "./api/worker/facades/IdentityKeyTrustDatabaseTest.js"
|
2025-04-14 12:30:27 +02:00
|
|
|
import "./api/worker/facades/RolloutFacadeTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/facades/RsaPqPerformanceTest.js"
|
|
|
|
|
import "./api/worker/facades/UserFacadeTest.js"
|
2025-05-08 15:44:26 +02:00
|
|
|
import "./api/worker/facades/PublicKeySignatureFacadeTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/invoicegen/PdfInvoiceGeneratorTest.js"
|
|
|
|
|
import "./api/worker/invoicegen/XRechnungInvoiceGeneratorTest.js"
|
|
|
|
|
import "./api/worker/pdf/DeflaterTest.js"
|
|
|
|
|
import "./api/worker/pdf/PdfDocumentTest.js"
|
|
|
|
|
import "./api/worker/pdf/PdfObjectTest.js"
|
|
|
|
|
import "./api/worker/pdf/PdfWriterTest.js"
|
|
|
|
|
import "./api/worker/rest/CacheStorageProxyTest.js"
|
|
|
|
|
import "./api/worker/rest/CborDateEncoderTest.js"
|
|
|
|
|
import "./api/worker/rest/CustomCacheHandlerTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./api/worker/rest/EntityRestCacheTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/rest/EntityRestClientTest.js"
|
add MailDetails feature, #4719
server issues: 1276, 1271, 1279, 1272, 1270, 1258, 1254, 1253, 1242, 1241
2022-11-03 19:03:54 +01:00
|
|
|
import "./api/worker/rest/EphemeralCacheStorageTest.js"
|
2025-07-14 11:01:59 +02:00
|
|
|
import "./api/worker/rest/PatchGeneratorTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/rest/ServiceExecutorTest.js"
|
|
|
|
|
import "./api/worker/search/BulkMailLoaderTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./api/worker/search/ContactIndexerTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/search/EventQueueTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./api/worker/search/IndexUtilsTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/search/IndexerCoreTest.js"
|
2025-03-13 16:37:55 +01:00
|
|
|
import "./api/worker/search/IndexedDbIndexerTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/search/MailIndexerTest.js"
|
2025-03-13 16:37:55 +01:00
|
|
|
import "./api/worker/search/IndexedDbMailIndexerBackendTest.js"
|
2025-04-04 17:48:53 +02:00
|
|
|
import "./api/worker/search/IndexedDbSearchFacadeTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./api/worker/search/SearchIndexEncodingTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./api/worker/search/SuggestionFacadeTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./serviceworker/SwTest.js"
|
2025-02-10 13:15:28 +01:00
|
|
|
import "./api/worker/facades/KeyVerificationFacadeTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./api/worker/utils/SleepDetectorTest.js"
|
|
|
|
|
import "./calendar/AlarmSchedulerTest.js"
|
2023-12-28 12:45:07 +01:00
|
|
|
import "./calendar/CalendarAgendaViewTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./calendar/CalendarGuiUtilsTest.js"
|
|
|
|
|
import "./calendar/CalendarImporterTest.js"
|
|
|
|
|
import "./calendar/CalendarInvitesTest.js"
|
|
|
|
|
import "./calendar/CalendarModelTest.js"
|
|
|
|
|
import "./calendar/CalendarParserTest.js"
|
|
|
|
|
import "./calendar/CalendarUtilsTest.js"
|
|
|
|
|
import "./calendar/CalendarViewModelTest.js"
|
|
|
|
|
import "./calendar/EventDragHandlerTest.js"
|
2023-04-25 16:54:46 +02:00
|
|
|
import "./calendar/eventeditor/CalendarEventAlarmModelTest.js"
|
|
|
|
|
import "./calendar/eventeditor/CalendarEventModelTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./calendar/eventeditor/CalendarEventWhenModelTest.js"
|
|
|
|
|
import "./calendar/eventeditor/CalendarEventWhoModelTest.js"
|
|
|
|
|
import "./calendar/eventeditor/CalendarNotificationModelTest.js"
|
2025-08-27 10:47:40 +02:00
|
|
|
import "./calendar/CalendarEventsRepositoryTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./contacts/ContactListEditorTest.js"
|
|
|
|
|
import "./contacts/ContactMergeUtilsTest.js"
|
|
|
|
|
import "./contacts/ContactUtilsTest.js"
|
|
|
|
|
import "./contacts/VCardExporterTest.js"
|
|
|
|
|
import "./contacts/VCardImporterTest.js"
|
|
|
|
|
import "./file/FileControllerTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./gui/ColorTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./gui/GuiUtilsTest.js"
|
|
|
|
|
import "./gui/ScopedRouterTest.js"
|
|
|
|
|
import "./gui/ThemeControllerTest.js"
|
|
|
|
|
import "./gui/animation/AnimationsTest.js"
|
|
|
|
|
import "./gui/base/WizardDialogNTest.js"
|
|
|
|
|
import "./login/LoginViewModelTest.js"
|
|
|
|
|
import "./login/PostLoginUtilsTest.js"
|
|
|
|
|
import "./mail/InboxRuleHandlerTest.js"
|
|
|
|
|
import "./mail/KnowledgeBaseSearchFilterTest.js"
|
|
|
|
|
import "./mail/MailModelTest.js"
|
|
|
|
|
import "./mail/MailUtilsSignatureTest.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
import "./mail/SendMailModelTest.js"
|
|
|
|
|
import "./mail/TemplateSearchFilterTest.js"
|
|
|
|
|
import "./mail/export/BundlerTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./mail/export/ExporterTest.js"
|
|
|
|
|
import "./mail/model/ConversationListModelTest.js"
|
2022-12-19 16:38:14 +01:00
|
|
|
import "./mail/model/FolderSystemTest.js"
|
2025-01-21 16:16:17 +01:00
|
|
|
import "./mail/model/MailListModelTest.js"
|
2024-03-11 16:25:43 +01:00
|
|
|
import "./mail/view/ConversationViewModelTest.js"
|
2025-02-06 18:37:30 +01:00
|
|
|
import "./mail/view/MailViewModelTest.js"
|
2024-03-11 16:25:43 +01:00
|
|
|
import "./mail/view/MailViewerViewModelTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./misc/ClientDetectorTest.js"
|
|
|
|
|
import "./misc/DeviceConfigTest.js"
|
|
|
|
|
import "./misc/FormatValidatorTest.js"
|
|
|
|
|
import "./misc/FormatterTest.js"
|
|
|
|
|
import "./misc/HtmlSanitizerTest.js"
|
2025-04-04 09:55:40 +02:00
|
|
|
import "./misc/UserSatisfactionDialogTests.js"
|
2025-07-23 10:09:53 +02:00
|
|
|
import "./misc/RecipientKeyVerificationRecoveryModelTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./misc/LanguageViewModelTest.js"
|
|
|
|
|
import "./misc/ListElementListModelTest.js"
|
|
|
|
|
import "./misc/ListModelTest.js"
|
|
|
|
|
import "./misc/NewsModelTest.js"
|
|
|
|
|
import "./misc/OutOfOfficeNotificationTest.js"
|
|
|
|
|
import "./misc/ParserTest.js"
|
|
|
|
|
import "./misc/PasswordGeneratorTest.js"
|
|
|
|
|
import "./misc/PasswordModelTest.js"
|
|
|
|
|
import "./misc/PasswordUtilsTest.js"
|
|
|
|
|
import "./misc/RecipientsModelTest.js"
|
|
|
|
|
import "./misc/SchedulerTest.js"
|
|
|
|
|
import "./misc/UsageTestModelTest.js"
|
|
|
|
|
import "./misc/credentials/CredentialsProviderTest.js"
|
|
|
|
|
import "./misc/news/items/ReferralLinkNewsTest.js"
|
|
|
|
|
import "./misc/parsing/MailAddressParserTest.js"
|
|
|
|
|
import "./misc/webauthn/WebauthnClientTest.js"
|
2024-11-29 10:17:40 +01:00
|
|
|
import "./native/main/MailExportControllerTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./settings/TemplateEditorModelTest.js"
|
|
|
|
|
import "./settings/UserDataExportTest.js"
|
|
|
|
|
import "./settings/login/secondfactor/SecondFactorEditModelTest.js"
|
|
|
|
|
import "./settings/mailaddress/MailAddressTableModelTest.js"
|
|
|
|
|
import "./settings/whitelabel/CustomColorEditorTest.js"
|
2025-05-13 13:17:30 +02:00
|
|
|
import "./settings/keymanagement/KeyVerificationModelTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./subscription/CreditCardViewModelTest.js"
|
|
|
|
|
import "./subscription/PriceUtilsTest.js"
|
|
|
|
|
import "./subscription/SignupFormTest.js"
|
2025-07-09 15:28:44 +02:00
|
|
|
import "./subscription/CaptchaTest.js"
|
2025-03-10 16:19:11 +01:00
|
|
|
import "./subscription/SubscriptionUtilsTest.js"
|
|
|
|
|
import "./support/FaqModelTest.js"
|
|
|
|
|
import "./translations/TranslationKeysTest.js"
|
2025-03-13 16:37:55 +01:00
|
|
|
import "./api/worker/search/IndexedDbContactIndexerBackendTest.js"
|
2025-06-06 17:17:18 +02:00
|
|
|
import "./api/worker/search/IndexedDbContactSearchFacadeTest.js"
|
2025-03-13 16:37:55 +01:00
|
|
|
import "./api/worker/search/OfflineStorageContactIndexerBackendTest.js"
|
2025-06-06 17:17:18 +02:00
|
|
|
import "./api/worker/search/OfflineStorageContactSearchFacadeTest.js"
|
2025-03-13 16:37:55 +01:00
|
|
|
import "./api/worker/rest/CustomUserCacheHandlerTest.js"
|
2025-04-17 17:22:08 +02:00
|
|
|
import "./api/common/utils/QueryTokenUtilsTest.js"
|
2025-06-13 17:27:15 +02:00
|
|
|
import "./api/worker/offline/PatchMergerTest.js"
|
2025-06-06 17:17:18 +02:00
|
|
|
import "./contacts/ContactModelTest.js"
|
2025-06-13 15:40:37 +02:00
|
|
|
import "./api/worker/search/OfflinestorageIndexerTest.js"
|
2025-06-13 17:27:15 +02:00
|
|
|
import "./api/worker/EventInstancePrefetcherTest.js"
|
2025-03-13 16:37:55 +01:00
|
|
|
|
2022-05-12 16:51:15 +02:00
|
|
|
import * as td from "testdouble"
|
2023-01-12 16:48:28 +01:00
|
|
|
import { random } from "@tutao/tutanota-crypto"
|
2024-07-01 17:56:41 +02:00
|
|
|
import { Mode } from "../../src/common/api/common/Env.js"
|
2022-05-12 16:51:15 +02:00
|
|
|
|
2023-06-29 18:26:45 +02:00
|
|
|
export async function run({ integration, filter }: { integration?: boolean; filter?: string } = {}) {
|
|
|
|
|
await setupSuite({ integration })
|
|
|
|
|
const result = await o.run({ filter })
|
2022-05-12 16:51:15 +02:00
|
|
|
|
2023-06-29 18:26:45 +02:00
|
|
|
o.printReport(result)
|
2022-05-12 16:51:15 +02:00
|
|
|
|
2023-06-29 18:26:45 +02:00
|
|
|
return result
|
|
|
|
|
}
|
2022-05-12 16:51:15 +02:00
|
|
|
|
2023-06-29 18:26:45 +02:00
|
|
|
async function setupSuite({ integration }: { integration?: boolean }) {
|
2024-08-20 18:03:03 +02:00
|
|
|
const { WorkerImpl } = await import("../../src/mail-app/workerUtils/worker/WorkerImpl.js")
|
2022-05-12 16:51:15 +02:00
|
|
|
globalThis.testWorker = WorkerImpl
|
|
|
|
|
|
2025-07-18 14:55:36 +02:00
|
|
|
if (typeof process !== "undefined") {
|
2023-06-29 18:26:45 +02:00
|
|
|
if (integration) {
|
2022-05-12 16:51:15 +02:00
|
|
|
console.log("\nRunning with integration tests because was run with -i\n")
|
|
|
|
|
await import("./api/main/WorkerTest.js")
|
|
|
|
|
await import("./IntegrationTest.js")
|
|
|
|
|
} else {
|
|
|
|
|
console.log("\nRunning without integration tests because run without -i\n")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-18 14:55:36 +02:00
|
|
|
if (typeof process !== "undefined") {
|
2022-05-12 16:51:15 +02:00
|
|
|
// setup the Entropy for all testcases
|
2023-01-12 16:48:28 +01:00
|
|
|
await random.addEntropy([{ data: 36, entropy: 256, source: "key" }])
|
2025-03-10 16:19:11 +01:00
|
|
|
await import("./api/worker/offline/OfflineStorageMigratorTest.js")
|
|
|
|
|
await import("./api/worker/offline/OfflineStorageTest.js")
|
|
|
|
|
await import("./api/worker/rest/RestClientTest.js")
|
2022-05-12 16:51:15 +02:00
|
|
|
await import("./desktop/ApplicationWindowTest.js")
|
|
|
|
|
await import("./desktop/DesktopContextMenuTest.js")
|
2025-03-10 16:19:11 +01:00
|
|
|
await import("./desktop/DesktopCryptoFacadeTest.js")
|
2023-11-09 13:30:55 +01:00
|
|
|
await import("./desktop/DesktopKeyStoreFacadeTest.js")
|
2025-07-08 18:31:10 +02:00
|
|
|
await import("./desktop/notifications/DesktopNotifierTest.js")
|
2025-08-07 11:26:25 +02:00
|
|
|
await import("./desktop/CommandExecutorTest.js")
|
2025-07-08 18:31:10 +02:00
|
|
|
await import("./desktop/notifications/WindowsNotificationFactoryTest.js")
|
2025-03-10 16:19:11 +01:00
|
|
|
await import("./desktop/ElectronUpdaterTest.js")
|
|
|
|
|
await import("./desktop/PathUtilsTest.js")
|
|
|
|
|
await import("./desktop/SocketeerTest.js")
|
2022-12-27 15:37:40 +01:00
|
|
|
await import("./desktop/config/ConfigFileTest.js")
|
2023-05-23 14:27:51 +02:00
|
|
|
await import("./desktop/config/DesktopConfigTest.js")
|
2025-03-10 16:19:11 +01:00
|
|
|
await import("./desktop/config/migrations/DesktopConfigMigratorTest.js")
|
|
|
|
|
await import("./desktop/credentials/AppPassHandlerTest.js")
|
|
|
|
|
await import("./desktop/credentials/DesktopCredentialsStorageTest.js")
|
|
|
|
|
await import("./desktop/credentials/DesktopNativeCredentialsFacadeTest.js")
|
|
|
|
|
await import("./desktop/credentials/KeychainEncryptionTest.js")
|
|
|
|
|
await import("./desktop/db/OfflineDbFacadeTest.js")
|
|
|
|
|
await import("./desktop/export/DesktopExportFacadeTest.js")
|
|
|
|
|
await import("./desktop/files/DesktopFileFacadeTest.js")
|
2023-10-12 17:54:38 +02:00
|
|
|
await import("./desktop/files/TempFsTest.js")
|
2025-03-10 16:19:11 +01:00
|
|
|
await import("./desktop/files/TempFsTest.js")
|
|
|
|
|
await import("./desktop/integration/DesktopIntegratorTest.js")
|
2025-08-07 11:26:25 +02:00
|
|
|
await import("./desktop/integration/WindowsRegistryFacadeTest.js")
|
2025-03-10 16:19:11 +01:00
|
|
|
await import("./desktop/integration/RegistryScriptGeneratorTest.js")
|
|
|
|
|
await import("./desktop/net/ProtocolProxyTest.js")
|
|
|
|
|
await import("./desktop/sse/DesktopAlarmSchedulerTest.js")
|
|
|
|
|
await import("./desktop/sse/DesktopAlarmStorageTest.js")
|
|
|
|
|
await import("./desktop/sse/SecretStorageTest.js")
|
2024-03-11 16:25:43 +01:00
|
|
|
await import("./desktop/sse/SseClientTest.js")
|
|
|
|
|
await import("./desktop/sse/TutaNotificationHandlerTest.js")
|
2025-03-10 16:19:11 +01:00
|
|
|
await import("./desktop/sse/TutaSseFacadeTest.js")
|
2025-04-11 17:00:01 +02:00
|
|
|
await import("./api/worker/search/OfflineStorageMailIndexerBackendTest.js")
|
2025-04-10 15:01:02 +02:00
|
|
|
await import("./api/worker/search/OfflineStoragePersistenceTest.js")
|
2025-04-04 17:48:53 +02:00
|
|
|
await import("./api/worker/search/OfflineStorageSearchFacadeTest.js")
|
2022-05-12 16:51:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// testdouble complains about certain mocking related code smells, and also prints a warning whenever you replace a property on an object.
|
|
|
|
|
// it's very very noisy, so we turn it off
|
|
|
|
|
td.config({
|
2022-12-27 15:37:40 +01:00
|
|
|
ignoreWarnings: true,
|
2022-05-12 16:51:15 +02:00
|
|
|
})
|
|
|
|
|
o.before(async function () {
|
|
|
|
|
// setup the Entropy for all testcases
|
2023-01-12 16:48:28 +01:00
|
|
|
await random.addEntropy([{ data: 36, entropy: 256, source: "key" }])
|
2022-05-12 16:51:15 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
o.afterEach(function () {
|
|
|
|
|
td.reset()
|
2023-06-29 18:26:45 +02:00
|
|
|
|
2022-05-12 16:51:15 +02:00
|
|
|
// Reset env.mode in case any tests have fiddled with it
|
|
|
|
|
env.mode = Mode.Test
|
|
|
|
|
})
|
|
|
|
|
}
|