Change test in RustMatrixAuthenticationServiceTest
This commit is contained in:
parent
d9755234dc
commit
8ece6afb23
5 changed files with 40 additions and 15 deletions
|
|
@ -10,8 +10,10 @@ package io.element.android.libraries.matrix.impl
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClientBuilder
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClientBuilder
|
||||||
import org.matrix.rustcomponents.sdk.ClientBuilder
|
import org.matrix.rustcomponents.sdk.ClientBuilder
|
||||||
|
|
||||||
class FakeClientBuilderProvider : ClientBuilderProvider {
|
class FakeClientBuilderProvider(
|
||||||
|
private val provideResult: () -> ClientBuilder = { FakeFfiClientBuilder() }
|
||||||
|
) : ClientBuilderProvider {
|
||||||
override fun provide(): ClientBuilder {
|
override fun provide(): ClientBuilder {
|
||||||
return FakeFfiClientBuilder()
|
return provideResult()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ fun TestScope.createRustMatrixClientFactory(
|
||||||
baseDirectory: File = File("/base"),
|
baseDirectory: File = File("/base"),
|
||||||
cacheDirectory: File = File("/cache"),
|
cacheDirectory: File = File("/cache"),
|
||||||
sessionStore: SessionStore = InMemorySessionStore(),
|
sessionStore: SessionStore = InMemorySessionStore(),
|
||||||
|
clientBuilderProvider: ClientBuilderProvider = FakeClientBuilderProvider(),
|
||||||
) = RustMatrixClientFactory(
|
) = RustMatrixClientFactory(
|
||||||
baseDirectory = baseDirectory,
|
baseDirectory = baseDirectory,
|
||||||
cacheDirectory = cacheDirectory,
|
cacheDirectory = cacheDirectory,
|
||||||
|
|
@ -52,5 +53,5 @@ fun TestScope.createRustMatrixClientFactory(
|
||||||
analyticsService = FakeAnalyticsService(),
|
analyticsService = FakeAnalyticsService(),
|
||||||
featureFlagService = FakeFeatureFlagService(),
|
featureFlagService = FakeFeatureFlagService(),
|
||||||
timelineEventTypeFilterFactory = FakeTimelineEventTypeFilterFactory(),
|
timelineEventTypeFilterFactory = FakeTimelineEventTypeFilterFactory(),
|
||||||
clientBuilderProvider = FakeClientBuilderProvider(),
|
clientBuilderProvider = clientBuilderProvider,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,17 @@
|
||||||
package io.element.android.libraries.matrix.impl.auth
|
package io.element.android.libraries.matrix.impl.auth
|
||||||
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.impl.ClientBuilderProvider
|
||||||
|
import io.element.android.libraries.matrix.impl.FakeClientBuilderProvider
|
||||||
import io.element.android.libraries.matrix.impl.createRustMatrixClientFactory
|
import io.element.android.libraries.matrix.impl.createRustMatrixClientFactory
|
||||||
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClient
|
||||||
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClientBuilder
|
||||||
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiHomeserverLoginDetails
|
||||||
import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory
|
import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory
|
||||||
import io.element.android.libraries.matrix.test.auth.FakeOidcRedirectUrlProvider
|
import io.element.android.libraries.matrix.test.auth.FakeOidcRedirectUrlProvider
|
||||||
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
||||||
import io.element.android.libraries.sessionstorage.api.SessionStore
|
import io.element.android.libraries.sessionstorage.api.SessionStore
|
||||||
import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
|
import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
|
||||||
import io.element.android.libraries.sessionstorage.test.aSessionData
|
|
||||||
import io.element.android.tests.testutils.testCoroutineDispatchers
|
import io.element.android.tests.testutils.testCoroutineDispatchers
|
||||||
import kotlinx.coroutines.test.TestScope
|
import kotlinx.coroutines.test.TestScope
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
|
|
@ -24,18 +27,28 @@ import java.io.File
|
||||||
|
|
||||||
class RustMatrixAuthenticationServiceTest {
|
class RustMatrixAuthenticationServiceTest {
|
||||||
@Test
|
@Test
|
||||||
fun `getLatestSessionId should return the value from the store`() = runTest {
|
fun `setHomeserver is successful`() = runTest {
|
||||||
val sessionStore = InMemorySessionStore()
|
|
||||||
val sut = createRustMatrixAuthenticationService(
|
val sut = createRustMatrixAuthenticationService(
|
||||||
sessionStore = sessionStore,
|
clientBuilderProvider = FakeClientBuilderProvider(
|
||||||
|
provideResult = {
|
||||||
|
FakeFfiClientBuilder(
|
||||||
|
buildResult = {
|
||||||
|
FakeFfiClient(
|
||||||
|
homeserverLoginDetailsResult = {
|
||||||
|
FakeFfiHomeserverLoginDetails()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
),
|
||||||
)
|
)
|
||||||
assertThat(sut.getLatestSessionId()).isNull()
|
assertThat(sut.setHomeserver("matrix.org").isSuccess).isTrue()
|
||||||
sessionStore.storeData(aSessionData(sessionId = "@alice:server.org"))
|
|
||||||
assertThat(sut.getLatestSessionId()).isEqualTo(SessionId("@alice:server.org"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun TestScope.createRustMatrixAuthenticationService(
|
private fun TestScope.createRustMatrixAuthenticationService(
|
||||||
sessionStore: SessionStore = InMemorySessionStore(),
|
sessionStore: SessionStore = InMemorySessionStore(),
|
||||||
|
clientBuilderProvider: ClientBuilderProvider = FakeClientBuilderProvider(),
|
||||||
): RustMatrixAuthenticationService {
|
): RustMatrixAuthenticationService {
|
||||||
val baseDirectory = File("/base")
|
val baseDirectory = File("/base")
|
||||||
val cacheDirectory = File("/cache")
|
val cacheDirectory = File("/cache")
|
||||||
|
|
@ -43,6 +56,7 @@ class RustMatrixAuthenticationServiceTest {
|
||||||
baseDirectory = baseDirectory,
|
baseDirectory = baseDirectory,
|
||||||
cacheDirectory = cacheDirectory,
|
cacheDirectory = cacheDirectory,
|
||||||
sessionStore = sessionStore,
|
sessionStore = sessionStore,
|
||||||
|
clientBuilderProvider = clientBuilderProvider,
|
||||||
)
|
)
|
||||||
return RustMatrixAuthenticationService(
|
return RustMatrixAuthenticationService(
|
||||||
sessionPathsFactory = SessionPathsFactory(baseDirectory, cacheDirectory),
|
sessionPathsFactory = SessionPathsFactory(baseDirectory, cacheDirectory),
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import io.element.android.tests.testutils.simulateLongTask
|
||||||
import org.matrix.rustcomponents.sdk.Client
|
import org.matrix.rustcomponents.sdk.Client
|
||||||
import org.matrix.rustcomponents.sdk.ClientDelegate
|
import org.matrix.rustcomponents.sdk.ClientDelegate
|
||||||
import org.matrix.rustcomponents.sdk.Encryption
|
import org.matrix.rustcomponents.sdk.Encryption
|
||||||
|
import org.matrix.rustcomponents.sdk.HomeserverLoginDetails
|
||||||
import org.matrix.rustcomponents.sdk.IgnoredUsersListener
|
import org.matrix.rustcomponents.sdk.IgnoredUsersListener
|
||||||
import org.matrix.rustcomponents.sdk.NoPointer
|
import org.matrix.rustcomponents.sdk.NoPointer
|
||||||
import org.matrix.rustcomponents.sdk.NotificationClient
|
import org.matrix.rustcomponents.sdk.NotificationClient
|
||||||
|
|
@ -41,6 +42,7 @@ class FakeFfiClient(
|
||||||
private val session: Session = aRustSession(),
|
private val session: Session = aRustSession(),
|
||||||
private val clearCachesResult: () -> Unit = { lambdaError() },
|
private val clearCachesResult: () -> Unit = { lambdaError() },
|
||||||
private val withUtdHook: (UnableToDecryptDelegate) -> Unit = { lambdaError() },
|
private val withUtdHook: (UnableToDecryptDelegate) -> Unit = { lambdaError() },
|
||||||
|
private val homeserverLoginDetailsResult: () -> HomeserverLoginDetails = { lambdaError() },
|
||||||
private val closeResult: () -> Unit = {},
|
private val closeResult: () -> Unit = {},
|
||||||
) : Client(NoPointer) {
|
) : Client(NoPointer) {
|
||||||
override fun userId(): String = userId
|
override fun userId(): String = userId
|
||||||
|
|
@ -71,6 +73,7 @@ class FakeFfiClient(
|
||||||
override suspend fun ignoredUsers(): List<String> {
|
override suspend fun ignoredUsers(): List<String> {
|
||||||
return emptyList()
|
return emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun subscribeToIgnoredUsers(listener: IgnoredUsersListener): TaskHandle {
|
override fun subscribeToIgnoredUsers(listener: IgnoredUsersListener): TaskHandle {
|
||||||
return FakeFfiTaskHandle()
|
return FakeFfiTaskHandle()
|
||||||
}
|
}
|
||||||
|
|
@ -78,5 +81,10 @@ class FakeFfiClient(
|
||||||
override suspend fun getProfile(userId: String): UserProfile {
|
override suspend fun getProfile(userId: String): UserProfile {
|
||||||
return UserProfile(userId = userId, displayName = null, avatarUrl = null)
|
return UserProfile(userId = userId, displayName = null, avatarUrl = null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun homeserverLoginDetails(): HomeserverLoginDetails {
|
||||||
|
return homeserverLoginDetailsResult()
|
||||||
|
}
|
||||||
|
|
||||||
override fun close() = closeResult()
|
override fun close() = closeResult()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@ import uniffi.matrix_sdk.BackupDownloadStrategy
|
||||||
import uniffi.matrix_sdk_crypto.CollectStrategy
|
import uniffi.matrix_sdk_crypto.CollectStrategy
|
||||||
import uniffi.matrix_sdk_crypto.DecryptionSettings
|
import uniffi.matrix_sdk_crypto.DecryptionSettings
|
||||||
|
|
||||||
class FakeFfiClientBuilder : ClientBuilder(NoPointer) {
|
class FakeFfiClientBuilder(
|
||||||
|
val buildResult: () -> Client = { FakeFfiClient(withUtdHook = {}) }
|
||||||
|
) : ClientBuilder(NoPointer) {
|
||||||
override fun addRootCertificates(certificates: List<ByteArray>) = this
|
override fun addRootCertificates(certificates: List<ByteArray>) = this
|
||||||
override fun autoEnableBackups(autoEnableBackups: Boolean) = this
|
override fun autoEnableBackups(autoEnableBackups: Boolean) = this
|
||||||
override fun autoEnableCrossSigning(autoEnableCrossSigning: Boolean) = this
|
override fun autoEnableCrossSigning(autoEnableCrossSigning: Boolean) = this
|
||||||
|
|
@ -41,7 +43,5 @@ class FakeFfiClientBuilder : ClientBuilder(NoPointer) {
|
||||||
override fun enableShareHistoryOnInvite(enableShareHistoryOnInvite: Boolean): ClientBuilder = this
|
override fun enableShareHistoryOnInvite(enableShareHistoryOnInvite: Boolean): ClientBuilder = this
|
||||||
override fun threadsEnabled(enabled: Boolean, threadSubscriptions: Boolean): ClientBuilder = this
|
override fun threadsEnabled(enabled: Boolean, threadSubscriptions: Boolean): ClientBuilder = this
|
||||||
|
|
||||||
override suspend fun build(): Client {
|
override suspend fun build() = buildResult()
|
||||||
return FakeFfiClient(withUtdHook = {})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue