From a8ba4751ed7b4b276efa5b2f79758ca461586742 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 7 Aug 2025 12:19:26 +0200 Subject: [PATCH] Fix tests --- .../impl/bugreport/FakeBugReporter.kt | 4 ++ .../impl/reporter/DefaultBugReporterTest.kt | 59 +++++++------------ .../matrix/test/tracing/FakeTracingService.kt | 26 ++++++++ 3 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/tracing/FakeTracingService.kt diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/FakeBugReporter.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/FakeBugReporter.kt index 1f10cd0ab1..ebaa524bd5 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/FakeBugReporter.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/FakeBugReporter.kt @@ -53,6 +53,10 @@ class FakeBugReporter(val mode: Mode = Mode.Success) : BugReporter { return File("fake") } + override fun setLogDirectorySubfolder(subfolderName: String?) { + // No op + } + override fun setCurrentTracingLogLevel(logLevel: String) { // No op } diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt index e73c7863b4..d85c35595c 100755 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt @@ -10,14 +10,19 @@ package io.element.android.features.rageshake.impl.reporter import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.RageshakeConfig import io.element.android.features.rageshake.api.reporter.BugReporterListener +import io.element.android.features.rageshake.impl.crash.CrashDataStore import io.element.android.features.rageshake.impl.crash.FakeCrashDataStore import io.element.android.features.rageshake.impl.screenshot.FakeScreenshotHolder +import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.test.FakeSdkMetadata +import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService +import io.element.android.libraries.matrix.test.tracing.FakeTracingService import io.element.android.libraries.network.useragent.DefaultUserAgentProvider +import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore import io.element.android.libraries.sessionstorage.test.aSessionData import io.element.android.tests.testutils.testCoroutineDispatchers @@ -45,7 +50,7 @@ class DefaultBugReporterTest { .setResponseCode(200) ) server.start() - val sut = createDefaultBugReporter(server) + val sut = createDefaultBugReporter(server = server) var onUploadCancelledCalled = false var onUploadFailedCalled = false val progressValues = mutableListOf() @@ -97,22 +102,14 @@ class DefaultBugReporterTest { storeData(aSessionData(sessionId = "@foo:example.com", deviceId = "ABCDEFGH")) } - val buildMeta = aBuildMeta() val fakeEncryptionService = FakeEncryptionService() val matrixClient = FakeMatrixClient(encryptionService = fakeEncryptionService) fakeEncryptionService.givenDeviceKeys("CURVECURVECURVE", "EDKEYEDKEYEDKY") - val sut = DefaultBugReporter( - context = RuntimeEnvironment.getApplication(), - screenshotHolder = FakeScreenshotHolder(), + val sut = createDefaultBugReporter( + server = server, crashDataStore = FakeCrashDataStore(), - coroutineDispatchers = testCoroutineDispatchers(), - okHttpClient = { OkHttpClient.Builder().build() }, - userAgentProvider = DefaultUserAgentProvider(buildMeta, FakeSdkMetadata("123456789")), sessionStore = mockSessionStore, - buildMeta = buildMeta, - bugReporterUrlProvider = { server.url("/") }, - sdkMetadata = FakeSdkMetadata("123456789"), matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(matrixClient) }) ) @@ -166,22 +163,13 @@ class DefaultBugReporterTest { storeData(aSessionData("@foo:example.com", "ABCDEFGH")) } - val buildMeta = aBuildMeta() val fakeEncryptionService = FakeEncryptionService() val matrixClient = FakeMatrixClient(encryptionService = fakeEncryptionService) fakeEncryptionService.givenDeviceKeys(null, null) - val sut = DefaultBugReporter( - context = RuntimeEnvironment.getApplication(), - screenshotHolder = FakeScreenshotHolder(), - crashDataStore = FakeCrashDataStore(), - coroutineDispatchers = testCoroutineDispatchers(), - okHttpClient = { OkHttpClient.Builder().build() }, - userAgentProvider = DefaultUserAgentProvider(buildMeta, FakeSdkMetadata("123456789")), + val sut = createDefaultBugReporter( + server = server, sessionStore = mockSessionStore, - buildMeta = buildMeta, - bugReporterUrlProvider = { server.url("/") }, - sdkMetadata = FakeSdkMetadata("123456789"), matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(matrixClient) }) ) @@ -209,21 +197,13 @@ class DefaultBugReporterTest { ) server.start() - val buildMeta = aBuildMeta() val fakeEncryptionService = FakeEncryptionService() fakeEncryptionService.givenDeviceKeys(null, null) - val sut = DefaultBugReporter( - context = RuntimeEnvironment.getApplication(), - screenshotHolder = FakeScreenshotHolder(), + val sut = createDefaultBugReporter( + server = server, crashDataStore = FakeCrashDataStore("I did crash", true), - coroutineDispatchers = testCoroutineDispatchers(), - okHttpClient = { OkHttpClient.Builder().build() }, - userAgentProvider = DefaultUserAgentProvider(buildMeta, FakeSdkMetadata("123456789")), sessionStore = InMemorySessionStore(), - buildMeta = buildMeta, - bugReporterUrlProvider = { server.url("/") }, - sdkMetadata = FakeSdkMetadata("123456789"), matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.failure(Exception("Mock no client")) }) ) @@ -276,7 +256,7 @@ class DefaultBugReporterTest { .setBody("""{"error": "An error body"}""") ) server.start() - val sut = createDefaultBugReporter(server) + val sut = createDefaultBugReporter(server = server) var onUploadCancelledCalled = false var onUploadFailedCalled = false var onUploadFailedReason: String? = null @@ -319,21 +299,26 @@ class DefaultBugReporterTest { } private fun TestScope.createDefaultBugReporter( - server: MockWebServer + sessionStore: SessionStore = InMemorySessionStore(), + matrixClientProvider: MatrixClientProvider = FakeMatrixClientProvider(), + crashDataStore: CrashDataStore = FakeCrashDataStore(), + server: MockWebServer = MockWebServer(), ): DefaultBugReporter { val buildMeta = aBuildMeta() return DefaultBugReporter( context = RuntimeEnvironment.getApplication(), screenshotHolder = FakeScreenshotHolder(), - crashDataStore = FakeCrashDataStore(), + crashDataStore = crashDataStore, coroutineDispatchers = testCoroutineDispatchers(), okHttpClient = { OkHttpClient.Builder().build() }, userAgentProvider = DefaultUserAgentProvider(buildMeta, FakeSdkMetadata("123456789")), - sessionStore = InMemorySessionStore(), + sessionStore = sessionStore, buildMeta = buildMeta, bugReporterUrlProvider = { server.url("/") }, sdkMetadata = FakeSdkMetadata("123456789"), - matrixClientProvider = FakeMatrixClientProvider() + matrixClientProvider = matrixClientProvider, + tracingService = FakeTracingService(), + matrixAuthenticationService = FakeMatrixAuthenticationService(), ) } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/tracing/FakeTracingService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/tracing/FakeTracingService.kt new file mode 100644 index 0000000000..52ffe8f32d --- /dev/null +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/tracing/FakeTracingService.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.matrix.test.tracing + +import io.element.android.libraries.matrix.api.tracing.TracingService +import io.element.android.libraries.matrix.api.tracing.WriteToFilesConfiguration +import io.element.android.tests.testutils.lambda.lambdaError +import timber.log.Timber + +class FakeTracingService( + private val createTimberTreeResult: (String) -> Timber.Tree = { lambdaError() }, + private val updateWriteToFilesConfigurationResult: (WriteToFilesConfiguration) -> Unit = { lambdaError() } +) : TracingService { + override fun createTimberTree(target: String): Timber.Tree { + return createTimberTreeResult(target) + } + + override fun updateWriteToFilesConfiguration(config: WriteToFilesConfiguration) { + updateWriteToFilesConfigurationResult(config) + } +}