Skip to content

Commit 2d801a0

Browse files
committed
Add tests
1 parent a8ba475 commit 2d801a0

File tree

1 file changed

+91
-2
lines changed

1 file changed

+91
-2
lines changed

features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt

Lines changed: 91 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import io.element.android.features.rageshake.impl.crash.CrashDataStore
1414
import io.element.android.features.rageshake.impl.crash.FakeCrashDataStore
1515
import io.element.android.features.rageshake.impl.screenshot.FakeScreenshotHolder
1616
import io.element.android.libraries.matrix.api.MatrixClientProvider
17+
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
18+
import io.element.android.libraries.matrix.api.tracing.TracingService
19+
import io.element.android.libraries.matrix.api.tracing.WriteToFilesConfiguration
1720
import io.element.android.libraries.matrix.test.FakeMatrixClient
1821
import io.element.android.libraries.matrix.test.FakeMatrixClientProvider
1922
import io.element.android.libraries.matrix.test.FakeSdkMetadata
@@ -25,6 +28,7 @@ import io.element.android.libraries.network.useragent.DefaultUserAgentProvider
2528
import io.element.android.libraries.sessionstorage.api.SessionStore
2629
import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore
2730
import io.element.android.libraries.sessionstorage.test.aSessionData
31+
import io.element.android.tests.testutils.lambda.lambdaRecorder
2832
import io.element.android.tests.testutils.testCoroutineDispatchers
2933
import kotlinx.coroutines.test.TestScope
3034
import kotlinx.coroutines.test.runTest
@@ -298,11 +302,96 @@ class DefaultBugReporterTest {
298302
assertThat(onUploadSucceedCalled).isFalse()
299303
}
300304

305+
@Test
306+
fun `the log directory is initialized using the last session store data`() = runTest {
307+
val sut = createDefaultBugReporter(
308+
sessionStore = InMemorySessionStore().apply {
309+
storeData(aSessionData(sessionId = "@alice:domain.com"))
310+
}
311+
)
312+
assertThat(sut.logDirectory().absolutePath).endsWith("/cache/logs/domain.com")
313+
}
314+
315+
@Test
316+
fun `when the log directory is updated, the tracing service is invoked`() = runTest {
317+
var param: WriteToFilesConfiguration? = null
318+
val updateWriteToFilesConfigurationResult = lambdaRecorder<WriteToFilesConfiguration, Unit> {
319+
param = it
320+
}
321+
val sut = createDefaultBugReporter(
322+
tracingService = FakeTracingService(
323+
updateWriteToFilesConfigurationResult = updateWriteToFilesConfigurationResult,
324+
)
325+
)
326+
sut.setLogDirectorySubfolder("my.sub.folder")
327+
updateWriteToFilesConfigurationResult.assertions().isCalledOnce()
328+
assertThat(param).isNotNull()
329+
assertThat(param).isInstanceOf(WriteToFilesConfiguration.Enabled::class.java)
330+
assertThat((param as WriteToFilesConfiguration.Enabled).directory).endsWith("/cache/logs/my.sub.folder")
331+
assertThat((param as WriteToFilesConfiguration.Enabled).filenamePrefix).isEqualTo("logs")
332+
assertThat((param as WriteToFilesConfiguration.Enabled).numberOfFiles).isEqualTo(168)
333+
assertThat((param as WriteToFilesConfiguration.Enabled).filenameSuffix).isEqualTo("log")
334+
}
335+
336+
@Test
337+
fun `when the log directory is reset, the tracing service is invoked`() = runTest {
338+
var param: WriteToFilesConfiguration? = null
339+
val updateWriteToFilesConfigurationResult = lambdaRecorder<WriteToFilesConfiguration, Unit> {
340+
param = it
341+
}
342+
val sut = createDefaultBugReporter(
343+
tracingService = FakeTracingService(
344+
updateWriteToFilesConfigurationResult = updateWriteToFilesConfigurationResult,
345+
)
346+
)
347+
sut.setLogDirectorySubfolder(null)
348+
updateWriteToFilesConfigurationResult.assertions().isCalledOnce()
349+
assertThat(param).isNotNull()
350+
assertThat(param).isInstanceOf(WriteToFilesConfiguration.Enabled::class.java)
351+
assertThat((param as WriteToFilesConfiguration.Enabled).directory).endsWith("/cache/logs")
352+
assertThat((param as WriteToFilesConfiguration.Enabled).filenamePrefix).isEqualTo("logs")
353+
assertThat((param as WriteToFilesConfiguration.Enabled).numberOfFiles).isEqualTo(168)
354+
assertThat((param as WriteToFilesConfiguration.Enabled).filenameSuffix).isEqualTo("log")
355+
}
356+
357+
@Test
358+
fun `when a new MatrixClient is created the logs folder is updated`() = runTest {
359+
var param: WriteToFilesConfiguration? = null
360+
val updateWriteToFilesConfigurationResult = lambdaRecorder<WriteToFilesConfiguration, Unit> {
361+
param = it
362+
}
363+
val matrixAuthenticationService = FakeMatrixAuthenticationService().apply {
364+
givenMatrixClient(
365+
FakeMatrixClient(
366+
userIdServerNameLambda = { "domain.foo.org" },
367+
)
368+
)
369+
}
370+
val sut = createDefaultBugReporter(
371+
matrixAuthenticationService = matrixAuthenticationService,
372+
tracingService = FakeTracingService(
373+
updateWriteToFilesConfigurationResult = updateWriteToFilesConfigurationResult,
374+
)
375+
)
376+
assertThat(sut.logDirectory().absolutePath).endsWith("/cache/logs")
377+
matrixAuthenticationService.login("alice", "password")
378+
assertThat(sut.logDirectory().absolutePath).endsWith("/cache/logs/domain.foo.org")
379+
updateWriteToFilesConfigurationResult.assertions().isCalledOnce()
380+
assertThat(param).isNotNull()
381+
assertThat(param).isInstanceOf(WriteToFilesConfiguration.Enabled::class.java)
382+
assertThat((param as WriteToFilesConfiguration.Enabled).directory).endsWith("/cache/logs/domain.foo.org")
383+
assertThat((param as WriteToFilesConfiguration.Enabled).filenamePrefix).isEqualTo("logs")
384+
assertThat((param as WriteToFilesConfiguration.Enabled).numberOfFiles).isEqualTo(168)
385+
assertThat((param as WriteToFilesConfiguration.Enabled).filenameSuffix).isEqualTo("log")
386+
}
387+
301388
private fun TestScope.createDefaultBugReporter(
302389
sessionStore: SessionStore = InMemorySessionStore(),
303390
matrixClientProvider: MatrixClientProvider = FakeMatrixClientProvider(),
304391
crashDataStore: CrashDataStore = FakeCrashDataStore(),
305392
server: MockWebServer = MockWebServer(),
393+
tracingService: TracingService = FakeTracingService(),
394+
matrixAuthenticationService: MatrixAuthenticationService = FakeMatrixAuthenticationService(),
306395
): DefaultBugReporter {
307396
val buildMeta = aBuildMeta()
308397
return DefaultBugReporter(
@@ -317,8 +406,8 @@ class DefaultBugReporterTest {
317406
bugReporterUrlProvider = { server.url("/") },
318407
sdkMetadata = FakeSdkMetadata("123456789"),
319408
matrixClientProvider = matrixClientProvider,
320-
tracingService = FakeTracingService(),
321-
matrixAuthenticationService = FakeMatrixAuthenticationService(),
409+
tracingService = tracingService,
410+
matrixAuthenticationService = matrixAuthenticationService,
322411
)
323412
}
324413

0 commit comments

Comments
 (0)