summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/test
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-05-06 14:12:10 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-05-06 14:12:10 +0200
commitfdf3b1a8bf8c5c095c3da257fb6094e58004b8cd (patch)
tree0f3a5bdd8697f91c92672bbc79f526d2c33fd9bd /android/app/src/test
parentc228ff918ac023c1c76bb4cf4f3d595a181cea63 (diff)
parentca2010cec00fb53a444776094047d45dbfc01b22 (diff)
downloadmullvadvpn-fdf3b1a8bf8c5c095c3da257fb6094e58004b8cd.tar.xz
mullvadvpn-fdf3b1a8bf8c5c095c3da257fb6094e58004b8cd.zip
Merge branch 'fix-tv-crash-on-go-to-vpn-settings-droid-1981'
Diffstat (limited to 'android/app/src/test')
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt35
1 files changed, 35 insertions, 0 deletions
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
index ec4e9c0bbb..b298270fad 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
@@ -39,6 +39,7 @@ import net.mullvad.mullvadvpn.usecase.LastKnownLocationUseCase
import net.mullvad.mullvadvpn.usecase.OutOfTimeUseCase
import net.mullvad.mullvadvpn.usecase.PaymentUseCase
import net.mullvad.mullvadvpn.usecase.SelectedLocationTitleUseCase
+import net.mullvad.mullvadvpn.usecase.SystemVpnSettingsAvailableUseCase
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
@@ -90,6 +91,9 @@ class ConnectViewModelTest {
// Last known location
private val mockLastKnownLocationUseCase: LastKnownLocationUseCase = mockk()
+ // System VPN Settings
+ private val mockSystemVpnSettingsUseCase: SystemVpnSettingsAvailableUseCase = mockk()
+
@BeforeEach
fun setup() {
every { mockServiceConnectionManager.connectionState } returns serviceConnectionState
@@ -125,6 +129,7 @@ class ConnectViewModelTest {
selectedLocationTitleUseCase = mockSelectedLocationTitleUseCase,
connectionProxy = mockConnectionProxy,
lastKnownLocationUseCase = mockLastKnownLocationUseCase,
+ systemVpnSettingsUseCase = mockSystemVpnSettingsUseCase,
resources = mockk(),
isPlayBuild = false,
isFdroidBuild = false,
@@ -334,4 +339,34 @@ class ConnectViewModelTest {
assertEquals(lastKnownLocation, result.location)
}
}
+
+ @Test
+ fun `given no vpn system setting available should return the correct permission denied`() =
+ runTest {
+ // Arrange
+ val expectedSideEffect =
+ ConnectViewModel.UiSideEffect.ConnectError.PermissionDenied(false)
+ every { mockSystemVpnSettingsUseCase.invoke() } returns false
+
+ // Act
+ viewModel.createVpnProfileResult(hasVpnPermission = false)
+
+ // Assert
+ viewModel.uiSideEffect.test { assertEquals(expectedSideEffect, awaitItem()) }
+ }
+
+ @Test
+ fun `given vpn system setting available should return the correct permission denied`() =
+ runTest {
+ // Arrange
+ val expectedSideEffect =
+ ConnectViewModel.UiSideEffect.ConnectError.PermissionDenied(true)
+ every { mockSystemVpnSettingsUseCase.invoke() } returns true
+
+ // Act
+ viewModel.createVpnProfileResult(hasVpnPermission = false)
+
+ // Assert
+ viewModel.uiSideEffect.test { assertEquals(expectedSideEffect, awaitItem()) }
+ }
}