From 15cf848cf18247ace81bb8577ce488d03ad3f501 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 30 Jul 2025 12:12:51 +0200 Subject: [PATCH] test : try to fix some tests --- .../session/room/model/PowerLevelsContent.kt | 2 +- ...faultCreateLocalRoomStateEventsTaskTest.kt | 15 ++++++------- .../app/core/utils/PermissionChecker.kt | 21 ++++++++++++++++--- .../features/location/LocationTrackerTest.kt | 4 +++- .../live/map/LiveLocationMapViewModelTest.kt | 3 +++ .../app/test/fakes/FakePermissionChecker.kt | 16 ++++++++++++++ 6 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 vector/src/test/java/im/vector/app/test/fakes/FakePermissionChecker.kt diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/PowerLevelsContent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/PowerLevelsContent.kt index 894640a488..cc9a5b5459 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/PowerLevelsContent.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/PowerLevelsContent.kt @@ -35,7 +35,7 @@ data class PowerLevelsContent( */ @Json(name = "kick") val kick: Int? = null, /** - * The level required to invite a user. Defaults to 50 if unspecified. + * The level required to invite a user. Defaults to 0 if unspecified. */ @Json(name = "invite") val invite: Int? = null, /** diff --git a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/session/room/create/DefaultCreateLocalRoomStateEventsTaskTest.kt b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/session/room/create/DefaultCreateLocalRoomStateEventsTaskTest.kt index 0669776394..664e7d4b64 100644 --- a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/session/room/create/DefaultCreateLocalRoomStateEventsTaskTest.kt +++ b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/session/room/create/DefaultCreateLocalRoomStateEventsTaskTest.kt @@ -52,6 +52,7 @@ import org.matrix.android.sdk.api.session.room.model.RoomTopicContent import org.matrix.android.sdk.api.session.room.model.create.CreateRoomPreset import org.matrix.android.sdk.api.session.room.model.create.RoomCreateContent import org.matrix.android.sdk.api.session.room.powerlevels.Role +import org.matrix.android.sdk.api.session.room.powerlevels.UserPowerLevel import org.matrix.android.sdk.api.session.user.UserService import org.matrix.android.sdk.api.session.user.model.User import org.matrix.android.sdk.internal.session.profile.ThirdPartyIdentifier.Companion.MEDIUM_EMAIL @@ -372,13 +373,13 @@ internal class DefaultCreateLocalRoomStateEventsTaskTest { // Power levels val powerLevelsContent = result.find { it.type == EventType.STATE_ROOM_POWER_LEVELS }?.content.toModel() powerLevelsContent.shouldNotBeNull() - powerLevelsContent.ban shouldBeEqualTo Role.Moderator.value - powerLevelsContent.kick shouldBeEqualTo Role.Moderator.value - powerLevelsContent.invite shouldBeEqualTo Role.Moderator.value - powerLevelsContent.redact shouldBeEqualTo Role.Moderator.value - powerLevelsContent.eventsDefault shouldBeEqualTo Role.User.value - powerLevelsContent.usersDefault shouldBeEqualTo Role.User.value - powerLevelsContent.stateDefault shouldBeEqualTo Role.Moderator.value + powerLevelsContent.ban shouldBeEqualTo UserPowerLevel.Moderator.value + powerLevelsContent.kick shouldBeEqualTo UserPowerLevel.Moderator.value + powerLevelsContent.invite shouldBeEqualTo UserPowerLevel.User.value + powerLevelsContent.redact shouldBeEqualTo UserPowerLevel.Moderator.value + powerLevelsContent.eventsDefault shouldBeEqualTo UserPowerLevel.User.value + powerLevelsContent.usersDefault shouldBeEqualTo UserPowerLevel.User.value + powerLevelsContent.stateDefault shouldBeEqualTo UserPowerLevel.Moderator.value // Guest access result.find { it.type == EventType.STATE_ROOM_GUEST_ACCESS } ?.content.toModel()?.guestAccess shouldBeEqualTo GuestAccess.Forbidden diff --git a/vector/src/main/java/im/vector/app/core/utils/PermissionChecker.kt b/vector/src/main/java/im/vector/app/core/utils/PermissionChecker.kt index 3840e028c0..1323edf188 100644 --- a/vector/src/main/java/im/vector/app/core/utils/PermissionChecker.kt +++ b/vector/src/main/java/im/vector/app/core/utils/PermissionChecker.kt @@ -10,12 +10,27 @@ package im.vector.app.core.utils import android.content.Context import android.content.pm.PackageManager import androidx.core.app.ActivityCompat +import dagger.Binds +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent import javax.inject.Inject -class PermissionChecker @Inject constructor( +interface PermissionChecker { + + @InstallIn(SingletonComponent::class) + @dagger.Module + interface Module { + @Binds + fun bindPermissionChecker(permissionChecker: AndroidPermissionChecker): PermissionChecker + } + + fun checkPermission(vararg permissions: String): Boolean +} + +class AndroidPermissionChecker @Inject constructor( private val applicationContext: Context, -) { - fun checkPermission(vararg permissions: String): Boolean { +) : PermissionChecker { + override fun checkPermission(vararg permissions: String): Boolean { return permissions.any { permission -> ActivityCompat.checkSelfPermission(applicationContext, permission) != PackageManager.PERMISSION_GRANTED } diff --git a/vector/src/test/java/im/vector/app/features/location/LocationTrackerTest.kt b/vector/src/test/java/im/vector/app/features/location/LocationTrackerTest.kt index 75660bb16f..40afb31b8f 100644 --- a/vector/src/test/java/im/vector/app/features/location/LocationTrackerTest.kt +++ b/vector/src/test/java/im/vector/app/features/location/LocationTrackerTest.kt @@ -14,6 +14,7 @@ import im.vector.app.features.session.coroutineScope import im.vector.app.test.fakes.FakeActiveSessionHolder import im.vector.app.test.fakes.FakeContext import im.vector.app.test.fakes.FakeLocationManager +import im.vector.app.test.fakes.FakePermissionChecker import im.vector.app.test.fixtures.aBuildMeta import im.vector.app.test.test import io.mockk.every @@ -29,6 +30,7 @@ import kotlinx.coroutines.test.runTest import org.amshove.kluent.shouldBeEqualTo import org.junit.After import org.junit.Before +import org.junit.Ignore import org.junit.Test private const val A_LATITUDE = 1.2 @@ -48,7 +50,7 @@ class LocationTrackerTest { @Before fun setUp() { mockkStatic("im.vector.app.features.session.SessionCoroutineScopesKt") - locationTracker = LocationTracker(fakeContext.instance, fakeActiveSessionHolder.instance, aBuildMeta()) + locationTracker = LocationTracker(fakeContext.instance, fakeActiveSessionHolder.instance, aBuildMeta(), FakePermissionChecker()) fakeLocationManager.givenRemoveUpdates(locationTracker) } diff --git a/vector/src/test/java/im/vector/app/features/location/live/map/LiveLocationMapViewModelTest.kt b/vector/src/test/java/im/vector/app/features/location/live/map/LiveLocationMapViewModelTest.kt index 108bdbed34..cc76a806b9 100644 --- a/vector/src/test/java/im/vector/app/features/location/live/map/LiveLocationMapViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/location/live/map/LiveLocationMapViewModelTest.kt @@ -12,6 +12,7 @@ import im.vector.app.features.location.LocationData import im.vector.app.features.location.live.StopLiveLocationShareUseCase import im.vector.app.test.fakes.FakeLocationSharingServiceConnection import im.vector.app.test.fakes.FakeLocationTracker +import im.vector.app.test.fakes.FakePermissionChecker import im.vector.app.test.fakes.FakeSession import im.vector.app.test.test import io.mockk.every @@ -38,6 +39,7 @@ class LiveLocationMapViewModelTest { private val fakeLocationSharingServiceConnection = FakeLocationSharingServiceConnection() private val fakeStopLiveLocationShareUseCase = mockk() private val fakeLocationTracker = FakeLocationTracker() + private val fakePermissionChecker = FakePermissionChecker() private fun createViewModel(): LiveLocationMapViewModel { return LiveLocationMapViewModel( @@ -47,6 +49,7 @@ class LiveLocationMapViewModelTest { locationSharingServiceConnection = fakeLocationSharingServiceConnection.instance, stopLiveLocationShareUseCase = fakeStopLiveLocationShareUseCase, locationTracker = fakeLocationTracker.instance, + permissionChecker = fakePermissionChecker ) } diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakePermissionChecker.kt b/vector/src/test/java/im/vector/app/test/fakes/FakePermissionChecker.kt new file mode 100644 index 0000000000..5665a706a7 --- /dev/null +++ b/vector/src/test/java/im/vector/app/test/fakes/FakePermissionChecker.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2022-2024 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 im.vector.app.test.fakes + +import im.vector.app.core.utils.PermissionChecker + +class FakePermissionChecker(val permissionResult: Boolean = true) : PermissionChecker { + override fun checkPermission(vararg permissions: String): Boolean { + return permissionResult + } +}