Benoit Marty
4 weeks ago
committed by
Benoit Marty
16 changed files with 280 additions and 40 deletions
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.room |
||||
|
||||
import com.squareup.anvil.annotations.ContributesBinding |
||||
import io.element.android.libraries.di.AppScope |
||||
import io.element.android.libraries.matrix.api.room.StateEventType |
||||
import org.matrix.rustcomponents.sdk.FilterTimelineEventType |
||||
import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter |
||||
import javax.inject.Inject |
||||
|
||||
interface TimelineEventTypeFilterFactory { |
||||
fun create(listStateEventType: List<StateEventType>): TimelineEventTypeFilter |
||||
} |
||||
|
||||
@ContributesBinding(AppScope::class) |
||||
class RustTimelineEventTypeFilterFactory @Inject constructor() : TimelineEventTypeFilterFactory { |
||||
override fun create(listStateEventType: List<StateEventType>): TimelineEventTypeFilter { |
||||
return TimelineEventTypeFilter.exclude( |
||||
listStateEventType.map { stateEventType -> |
||||
FilterTimelineEventType.State(stateEventType.map()) |
||||
} |
||||
) |
||||
} |
||||
} |
@ -0,0 +1,47 @@
@@ -0,0 +1,47 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl |
||||
|
||||
import com.google.common.truth.Truth.assertThat |
||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustClient |
||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustSyncService |
||||
import io.element.android.libraries.matrix.impl.room.FakeTimelineEventTypeFilterFactory |
||||
import io.element.android.libraries.matrix.test.A_DEVICE_ID |
||||
import io.element.android.libraries.matrix.test.A_USER_ID |
||||
import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore |
||||
import io.element.android.services.toolbox.test.systemclock.FakeSystemClock |
||||
import io.element.android.tests.testutils.testCoroutineDispatchers |
||||
import kotlinx.coroutines.test.runTest |
||||
import org.junit.Test |
||||
import java.io.File |
||||
|
||||
class RustMatrixClientTest { |
||||
@Test |
||||
fun `ensure that sessionId and deviceId can be retrieved from the client`() = runTest { |
||||
val sessionStore = InMemorySessionStore() |
||||
val sut = RustMatrixClient( |
||||
client = FakeRustClient(), |
||||
syncService = FakeRustSyncService(), |
||||
sessionStore = InMemorySessionStore(), |
||||
appCoroutineScope = this, |
||||
dispatchers = testCoroutineDispatchers(), |
||||
baseDirectory = File(""), |
||||
baseCacheDirectory = File(""), |
||||
clock = FakeSystemClock(), |
||||
sessionDelegate = RustClientSessionDelegate( |
||||
sessionStore = sessionStore, |
||||
appCoroutineScope = this, |
||||
coroutineDispatchers = testCoroutineDispatchers(), |
||||
), |
||||
timelineEventTypeFilterFactory = FakeTimelineEventTypeFilterFactory(), |
||||
) |
||||
assertThat(sut.sessionId).isEqualTo(A_USER_ID) |
||||
assertThat(sut.deviceId).isEqualTo(A_DEVICE_ID) |
||||
sut.close() |
||||
} |
||||
} |
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import io.element.android.libraries.matrix.impl.fixtures.factories.aRustSession |
||||
import io.element.android.libraries.matrix.test.A_DEVICE_ID |
||||
import io.element.android.libraries.matrix.test.A_USER_ID |
||||
import org.matrix.rustcomponents.sdk.Client |
||||
import org.matrix.rustcomponents.sdk.ClientDelegate |
||||
import org.matrix.rustcomponents.sdk.Encryption |
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.NotificationClient |
||||
import org.matrix.rustcomponents.sdk.NotificationProcessSetup |
||||
import org.matrix.rustcomponents.sdk.NotificationSettings |
||||
import org.matrix.rustcomponents.sdk.Session |
||||
import org.matrix.rustcomponents.sdk.TaskHandle |
||||
|
||||
class FakeRustClient( |
||||
private val userId: String = A_USER_ID.value, |
||||
private val deviceId: String = A_DEVICE_ID.value, |
||||
private val notificationClient: NotificationClient = FakeRustNotificationClient(), |
||||
private val notificationSettings: NotificationSettings = FakeRustNotificationSettings(), |
||||
private val encryption: Encryption = FakeRustEncryption(), |
||||
private val session: Session = aRustSession(), |
||||
) : Client(NoPointer) { |
||||
override fun userId(): String = userId |
||||
override fun deviceId(): String = deviceId |
||||
override suspend fun notificationClient(processSetup: NotificationProcessSetup) = notificationClient |
||||
override fun getNotificationSettings(): NotificationSettings = notificationSettings |
||||
override fun encryption(): Encryption = encryption |
||||
override fun session(): Session = session |
||||
override fun setDelegate(delegate: ClientDelegate?): TaskHandle = FakeRustTaskHandle() |
||||
override fun cachedAvatarUrl(): String? = null |
||||
} |
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import org.matrix.rustcomponents.sdk.Encryption |
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.RecoveryStateListener |
||||
import org.matrix.rustcomponents.sdk.TaskHandle |
||||
import org.matrix.rustcomponents.sdk.VerificationStateListener |
||||
|
||||
class FakeRustEncryption : Encryption(NoPointer) { |
||||
override fun verificationStateListener(listener: VerificationStateListener): TaskHandle { |
||||
return FakeRustTaskHandle() |
||||
} |
||||
|
||||
override fun recoveryStateListener(listener: RecoveryStateListener): TaskHandle { |
||||
return FakeRustTaskHandle() |
||||
} |
||||
} |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.NotificationClient |
||||
|
||||
class FakeRustNotificationClient : NotificationClient(NoPointer) |
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.NotificationSettings |
||||
import org.matrix.rustcomponents.sdk.NotificationSettingsDelegate |
||||
|
||||
class FakeRustNotificationSettings : NotificationSettings(NoPointer) { |
||||
private var delegate: NotificationSettingsDelegate? = null |
||||
|
||||
override fun setDelegate(delegate: NotificationSettingsDelegate?) { |
||||
this.delegate = delegate |
||||
} |
||||
} |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.RoomList |
||||
|
||||
class FakeRustRoomList : RoomList(NoPointer) |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.RoomList |
||||
import org.matrix.rustcomponents.sdk.RoomListService |
||||
|
||||
class FakeRustRoomListService : RoomListService(NoPointer) { |
||||
override suspend fun allRooms(): RoomList { |
||||
return FakeRustRoomList() |
||||
} |
||||
} |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.RoomListService |
||||
import org.matrix.rustcomponents.sdk.SyncService |
||||
|
||||
class FakeRustSyncService( |
||||
private val roomListService: RoomListService = FakeRustRoomListService(), |
||||
) : SyncService(NoPointer) { |
||||
override fun roomListService(): RoomListService = roomListService |
||||
} |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.TaskHandle |
||||
|
||||
class FakeRustTaskHandle : TaskHandle(NoPointer) { |
||||
override fun cancel() = Unit |
||||
override fun destroy() = Unit |
||||
} |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.fixtures.fakes |
||||
|
||||
import org.matrix.rustcomponents.sdk.NoPointer |
||||
import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter |
||||
|
||||
class FakeRustTimelineEventTypeFilter : TimelineEventTypeFilter(NoPointer) |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
/* |
||||
* Copyright 2024 New Vector Ltd. |
||||
* |
||||
* SPDX-License-Identifier: AGPL-3.0-only |
||||
* Please see LICENSE in the repository root for full details. |
||||
*/ |
||||
|
||||
package io.element.android.libraries.matrix.impl.room |
||||
|
||||
import io.element.android.libraries.matrix.api.room.StateEventType |
||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimelineEventTypeFilter |
||||
import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter |
||||
|
||||
class FakeTimelineEventTypeFilterFactory : TimelineEventTypeFilterFactory { |
||||
override fun create(listStateEventType: List<StateEventType>): TimelineEventTypeFilter { |
||||
return FakeRustTimelineEventTypeFilter() |
||||
} |
||||
} |
Loading…
Reference in new issue