summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-08-25 12:37:00 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-09-07 09:05:53 +0200
commitcc729a235a1c792e43384bd154c66ee723178db3 (patch)
tree6dce181dfdc9450b2a9d51ff01cb8843bb730a47
parent67d7cd4e52ef07d5bff65440081d61dceaf270b4 (diff)
downloadmullvadvpn-cc729a235a1c792e43384bd154c66ee723178db3.tar.xz
mullvadvpn-cc729a235a1c792e43384bd154c66ee723178db3.zip
Add unit tests for out of time behaviour
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt26
1 files changed, 26 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 776136d1c5..517281e6c2 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
@@ -11,8 +11,10 @@ import io.mockk.unmockkAll
import io.mockk.verify
import kotlin.test.assertEquals
import kotlin.test.assertIs
+import kotlinx.coroutines.async
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest
import net.mullvad.mullvadvpn.compose.state.ConnectNotificationState
import net.mullvad.mullvadvpn.compose.state.ConnectUiState
@@ -36,6 +38,7 @@ import net.mullvad.mullvadvpn.ui.serviceconnection.authTokenCache
import net.mullvad.mullvadvpn.ui.serviceconnection.connectionProxy
import net.mullvad.mullvadvpn.util.appVersionCallbackFlow
import net.mullvad.talpid.tunnel.ErrorState
+import net.mullvad.talpid.tunnel.ErrorStateCause
import net.mullvad.talpid.util.EventNotifier
import org.joda.time.DateTime
import org.joda.time.ReadableInstant
@@ -404,6 +407,29 @@ class ConnectViewModelTest {
}
}
+ @Test
+ fun testOutOfTimeViewAction() =
+ runTest(testCoroutineRule.testDispatcher) {
+ // Arrange
+ val errorStateCause = ErrorStateCause.AuthFailed("[EXPIRED_ACCOUNT]")
+ val tunnelRealStateTestItem = TunnelState.Error(ErrorState(errorStateCause, true))
+ val deferred = async { viewModel.viewActions.first() }
+
+ // Act
+ viewModel.uiState.test {
+ awaitItem()
+ serviceConnectionState.value =
+ ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
+ locationSlot.captured.invoke(mockLocation)
+ relaySlot.captured.invoke(mockk(), mockk())
+ eventNotifierTunnelRealState.notify(tunnelRealStateTestItem)
+ awaitItem()
+ }
+
+ // Assert
+ assertIs<ConnectViewModel.ViewAction.OpenOutOfTimeView>(deferred.await())
+ }
+
companion object {
private const val CACHE_EXTENSION_CLASS = "net.mullvad.mullvadvpn.util.CacheExtensionsKt"
private const val SERVICE_CONNECTION_MANAGER_EXTENSIONS =