summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'android/app/src/test')
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt57
1 files changed, 49 insertions, 8 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 8e2bd28c52..5b1ee8e7e1 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
@@ -7,6 +7,7 @@ import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.slot
import io.mockk.unmockkAll
+import io.mockk.verify
import kotlin.test.assertEquals
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.MutableStateFlow
@@ -25,6 +26,7 @@ import net.mullvad.mullvadvpn.ui.serviceconnection.RelayListListener
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionContainer
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionState
+import net.mullvad.mullvadvpn.ui.serviceconnection.connectionProxy
import net.mullvad.mullvadvpn.util.appVersionCallbackFlow
import net.mullvad.talpid.util.EventNotifier
import org.junit.After
@@ -68,6 +70,7 @@ class ConnectViewModelTest {
@Before
fun setup() {
mockkStatic(CACHE_EXTENSION_CLASS)
+ mockkStatic(SERVICE_CONNECTION_MANAGER_EXTENSIONS)
mockAppVersionInfoCache =
mockk<AppVersionInfoCache>().apply {
@@ -110,7 +113,7 @@ class ConnectViewModelTest {
assertEquals(ConnectUiState.INITIAL, awaitItem())
serviceConnectionState.value =
ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
- locationSlot.captured.invoke(mockk())
+ locationSlot.captured.invoke(mockk(relaxed = true))
relaySlot.captured.invoke(mockk(), mockk())
viewModel.toggleTunnelInfoExpansion()
val result = awaitItem()
@@ -121,13 +124,13 @@ class ConnectViewModelTest {
@Test
fun testTunnelRealStateUpdate() =
runTest(testCoroutineRule.testDispatcher) {
- val tunnelRealStateTestItem = TunnelState.Connected(mockk(), mockk())
+ val tunnelRealStateTestItem = TunnelState.Connected(mockk(relaxed = true), mockk())
viewModel.uiState.test {
assertEquals(ConnectUiState.INITIAL, awaitItem())
serviceConnectionState.value =
ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
- locationSlot.captured.invoke(mockk())
+ locationSlot.captured.invoke(mockk(relaxed = true))
relaySlot.captured.invoke(mockk(), mockk())
eventNotifierTunnelRealState.notify(tunnelRealStateTestItem)
val result = awaitItem()
@@ -144,7 +147,7 @@ class ConnectViewModelTest {
assertEquals(ConnectUiState.INITIAL, awaitItem())
serviceConnectionState.value =
ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
- locationSlot.captured.invoke(mockk())
+ locationSlot.captured.invoke(mockk(relaxed = true))
relaySlot.captured.invoke(mockk(), mockk())
eventNotifierTunnelUiState.notify(tunnelUiStateTestItem)
val result = awaitItem()
@@ -167,7 +170,7 @@ class ConnectViewModelTest {
assertEquals(ConnectUiState.INITIAL, awaitItem())
serviceConnectionState.value =
ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
- locationSlot.captured.invoke(mockk())
+ locationSlot.captured.invoke(mockk(relaxed = true))
relaySlot.captured.invoke(mockk(), mockk())
versionInfo.value = versionInfoTestItem
val result = awaitItem()
@@ -185,7 +188,7 @@ class ConnectViewModelTest {
assertEquals(ConnectUiState.INITIAL, awaitItem())
serviceConnectionState.value =
ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
- locationSlot.captured.invoke(mockk())
+ locationSlot.captured.invoke(mockk(relaxed = true))
relaySlot.captured.invoke(mockk(), relayTestItem)
val result = awaitItem()
assertEquals(relayTestItem, result.relayLocation)
@@ -197,8 +200,8 @@ class ConnectViewModelTest {
runTest(testCoroutineRule.testDispatcher) {
val locationTestItem =
GeoIpLocation(
- ipv4 = mockk(),
- ipv6 = mockk(),
+ ipv4 = mockk(relaxed = true),
+ ipv6 = mockk(relaxed = true),
country = "Sweden",
city = "Gothenburg",
hostname = "Host"
@@ -215,7 +218,45 @@ class ConnectViewModelTest {
}
}
+ @Test
+ fun testOnDisconnectClick() =
+ runTest(testCoroutineRule.testDispatcher) {
+ val mockConnectionProxy: ConnectionProxy = mockk(relaxed = true)
+ every { mockServiceConnectionManager.connectionProxy() } returns mockConnectionProxy
+ viewModel.onDisconnectClick()
+ verify { mockConnectionProxy.disconnect() }
+ }
+
+ @Test
+ fun testOnReconnectClick() =
+ runTest(testCoroutineRule.testDispatcher) {
+ val mockConnectionProxy: ConnectionProxy = mockk(relaxed = true)
+ every { mockServiceConnectionManager.connectionProxy() } returns mockConnectionProxy
+ viewModel.onReconnectClick()
+ verify { mockConnectionProxy.reconnect() }
+ }
+
+ @Test
+ fun testOnConnectClick() =
+ runTest(testCoroutineRule.testDispatcher) {
+ val mockConnectionProxy: ConnectionProxy = mockk(relaxed = true)
+ every { mockServiceConnectionManager.connectionProxy() } returns mockConnectionProxy
+ viewModel.onConnectClick()
+ verify { mockConnectionProxy.connect() }
+ }
+
+ @Test
+ fun testOnCancelClick() =
+ runTest(testCoroutineRule.testDispatcher) {
+ val mockConnectionProxy: ConnectionProxy = mockk(relaxed = true)
+ every { mockServiceConnectionManager.connectionProxy() } returns mockConnectionProxy
+ viewModel.onCancelClick()
+ verify { mockConnectionProxy.disconnect() }
+ }
+
companion object {
private const val CACHE_EXTENSION_CLASS = "net.mullvad.mullvadvpn.util.CacheExtensionsKt"
+ private const val SERVICE_CONNECTION_MANAGER_EXTENSIONS =
+ "net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManagerExtensionsKt"
}
}