diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-05-06 14:12:10 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-05-06 14:12:10 +0200 |
| commit | fdf3b1a8bf8c5c095c3da257fb6094e58004b8cd (patch) | |
| tree | 0f3a5bdd8697f91c92672bbc79f526d2c33fd9bd /android/app/src/test | |
| parent | c228ff918ac023c1c76bb4cf4f3d595a181cea63 (diff) | |
| parent | ca2010cec00fb53a444776094047d45dbfc01b22 (diff) | |
| download | mullvadvpn-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.kt | 35 |
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()) } + } } |
